前段时间有空看了《actionscript 3设计模式》,joey lott, danny patterson著,徐明亮、谷小娜译,清华大学出版社出版的,应该说翻译的不错。该书大概介绍了一些常用设计模式的actionscript的实现。但是,个人感觉该书的起点稍微有点高,对于不了解设计模式的人来说比较难以理解(没有透彻的讲解设计模式),而对于熟悉设计模式的人只要注意actoncript的单例模式和了解actionscript都用到了哪些常用的设计模式,对于更高层次的理解和使用actionscript都是有帮助的。对于不了解设计模式的人员建议走如下的学习路线图。
1、 简单了解设计模式
关于设计模式的书籍很多,而且基本雷同,网上关于设计模式的讲解也比较多,比如基于java的、基于c++的等等。个人觉得http://www.jdon.com/designpatterns/index.htm讲解的设计模式比较精华,讲解了gof的23种常用设计模式,每个设计模式的篇幅都不是很长,但是描述形象很容易理解。
2、 关注actionscript的单例模式
由于actionscript没有私有构造函数,因此actionscript实现单例模式相对java而言较比较麻烦,有点曲线救国的意思,下述代码为as单例模式的一个实现。
package pattern { public class Singleton { private static var _instance:Singleton = null; // public function Singleton(constructor:SingletonEnforcer) { }
public static function getInstance():Singleton{ if(_instance==null) _instance = new Singleton(new SingletonEnforcer()); return _instance; } }
class SingletonEnforcer{ } } |
注意点:
1) 静态的单例变量:_instance;
2) 带有参数的构造函数,并且构造函数参数有严格的访问权限(外面不能访问);
3) 调用Singleton. getInstance()即可获取sington的引用;
4) actionscript的单例模式是假的,程序员可以通过new Singleton(null),创建Singleton的一个新实例。
3、 深入体会《actionscript 3设计模式》提到的设计模式,重点是其example
其实《actionscript 3设计模式》就单纯讲设计模式来说,其讲解的并不是很好,但是里面的example却不错,一定层面上暴露了actionscript的设计思想,及其所用到的设计模式。比如,最近再写一个flex的多列下拉选择框控件的时候,会自定义渲染器、编辑器和flex事件,个人认为其中就有工厂模式、职责链模式。