随着Flash平台的成长,Flash的应用规模也逐渐扩展。这种增长趋势要求ActionScript开发人员也要快速成熟起来。Flash应用已经达到一个新的层次,增长的需求也意味着越来越多的开发者必须不断地打磨自己的编程技术,设法更深入地理解所编写代码以及工程应用之间的联系。而设计模式正是这样一种资源可以帮助实现这一切。 ActionScript是 Flash的脚本语言,简单易学。您只需记住一些基本语法、API参考函数以及适宜的IDE集成开发环境),即可熟练应用ActionScript。真正的难点在于Flash应用的框架结构,在于编写什么样的类,如何为这些类挑选API函数。然而,当您创建了越来越多的应用程序的时候,您会发现总是一再地出现一些模式。这些就是完成任务、解决某些经常发生问题的一些途径。这些通用的解决方案就是设计模式的基础。目前已经存在有许多设计模式。如果您可以明确地区别它们,并明智地使用,那么一定可以用最少的力气编写同样难度的应用程序。或许,您已经取得了很好的结果,但是其实每一次您都是在使用别人早已用过的方法。学习设计模式可以帮助我们更快速地识别构造新应用的智能以及有效的方式。 迄今为止,软件开发人员已经创建众多的设计模式。本书所讨论的设计模式只是其中一小部分。我们将我们认为的对ActionScript应用程序开发最有用途、最有应用价值的设计模式悉数选取在本书当中。但是,书中的设计模式并不是圣经。我们只是希望这些模式可以对您的应用开发提供一些指导和启发。这里讨论的所有模式都是经过编程人员多年使用验证过的。学习它们,您就可以站在巨人的肩膀之上。可是大家要明白,模式并不是规则,它们只是专家发现的有用信息,没有必要一定要完全照搬模式。学习这些模式的时候,请保持开放、活跃的心态,但是也要保留批评、清醒的头脑。 设计模式首先介绍了那些需要与特定接口有紧密关系的模式,该接口指定了通用的结构。虽然这些模式的内容不同,但是它们都有着共同的目的:解决某一种设计问题。比如说,一个经典的设计问题就是一种可以让您创建一个在编译阶段不用指定对象具体类型的方式。比如说,一个图表应用中,您或许需要创建并显示一些在运行时已经确定具体类型(柱状图、线图等等)的图表。如果在编译阶段指定其具体类型(比如说,创建新BarChart对象),那么我们将陷入一个严格的结构定义当中,并且在稍后的阶段中我们也不能更改类型或者添加新的类型。这是众多应用都普遍存在的问题,程序开发人员也在多年的开发过程中多次提出解决方案。而被证明是最有用、最高效、最灵活并且是最简单的实现方式也就逐渐成为可以学习的模式出现了。上述关于具体类型问题的一个解决方案就是我们将在本书中讨论的工厂模式(Factory Method pattern,第5章)。 使用设计模式的另一大好处就是您可以使用通用的词汇表有效地与其他开发人员进行交流。试想一下,如果您并不知道“车”这个单词,那么每次当您与别人谈论到“车”的时候,您都需要对“车”这个对象进行描述。或许您会说“它是一个具有轮子、引擎以及门的对象,大概可以乘坐2到5个人,司机可以通过转向器对其进行控制”。每次谈论到“车”的时候,您都会使用这种描述,而这种描述势必影响到您与其他人进行有效、快速的沟通。拥有一个相关专有单词却可以让这一切变得更简洁、高效。也正是基于这种原因,我们在本书谈到的所有设计模式都拥有自己的名称。比如,您只需说“备忘录模式(Memento Pattern)”,我们就知道它指的是“维持良好的封装性能前提下,允许您捕获并且设定状态的模式。” 关于本书 本书是一本高级ActionScript 3.0设计模式用书。大家或许也一直没有搞明白“高级”一词的含义。高级ActionScript 3.0指的是本书并不包含API引用函数以及ActionScript 3.0的入门基础这些主题。我们假定读者已经具备基础的编程知识,了解ActionScript 3.0的相关原理(至少包括变量、表达式、语句、对象、继承以及基础类的编写方法)。 很多书都在讨论如何编写类,而本书讨论的是类设计的多种方式。本书将告诉您何时、为何以及如何使用面向对象中的合成(composition)和继承(inheritance)关系,以及一个个相关联的类如何构成模式。 本书的组织方式如下: 1. 介绍应用设计原理。 2. 设计模式的描述。 3. 高级概念。 本书展示了大量示例,希望您可以与我们一起进行这些练习。 您可以在官方网站上找到本书的附加信息以及更新。还可以直接从该网站下载AAS3WDP类库。本书中许多示例都使用到AAS3WDP类库中的类。如果希望在自己的计算机上在线使用这些示例,一定要下载该类库。