【asp精品源码栏目提醒】:网学会员asp精品源码为您提供AS3设计模式 - 其它资料参考,解决您在AS3设计模式 - 其它资料学习中工作中的难题,参考学习。
有人问我 flash 的 as 应该怎么写,我可以很负责任地告诉他, 想怎么写就怎么写,因为 as 以及 flash 内部的构成模式决定了它的高度自由化。
理论上来说,用按钮的 on 事件,加上 stop,play,gotoAndStop,gotoAndPlay,就可以实现一个 flash 里大部分的逻辑关系,而且源代码简单易懂。
但是大多数人不会这么做,是因为这种方法实在太让人敬佩。
稍有常识的程序员都会知道面对对象与面对过程的区别。
Flash 的编程虽然只是以脚本的形式出现,并且还很不完善,比如,没有多继承,但已经初步体现了 oop 的思想。
这篇文章现在总结一下 flash 中面对对象的设计模式问题,以及一些自创的思路。
设计模式是美国一位建筑大师(同时也是信息工程师,画家,机械工程师…的)克里斯蒂安.亚历山大首先提出来的,很快被软件界的技术员们所接受推广,成为软件工程里至高无上的法则之一(有兴趣的人可以找他的《建筑的永恒之道》一书看看,相信会受益非浅)。
简单地说就是在面对对象的基础上,包括面对对象,把要设计的整体的各个部分模式化,层次化,细粒度化,高度复用化,可控化,人性化。
其中至高无上的原则是建立在需求的基础之上,也就是说,无论做什么,人的需求要放在第一位考虑,从这个角度考虑整个系统是否足够合理。
这门学问是非常有趣的,尤其在 flash 中,可以应用到很多很好玩的实例中去。
下面我按照一些通用的设计模式,举例说明,有错误的地方,敬请高手指正:1.抽象工厂模式(Abstract Factory):食堂里吃的东西很多,而我只想吃一样,那么食堂这个概念对我来说就是个抽象工厂,每个窗口可以看成它的一个具体实现,我要做的就是,去食堂,找到那个窗口,从窗口里买我要吃的东西。
举例:flash 前台与 asp 后台的交互,访问某个动态页面,从数据库里取出需要的数据,通常的做法是在后台就把数据集解析成 xml 字符串,再送给 swf。
每个业务逻辑模块,所取出的数据结构,也就是 xml 的结构是不一样的,我们要针对各个具体的业务逻辑,对相应的 xml 字符串解析,转换成可供显示的数组。
也要把flash 里文本输入的内容转换成 xml 字符串,提交给后台也面AbstractFactory.as//抽象工厂的接口Interface AbstractFactory//生成 xml 解析工厂的具体实现function createXmlParseFactoryXMLParserGetFactory.as//生成解析读入的 xml 的对象的工厂class XMLParserGetFactory implements AbstractFactory.var xmlParserfunction XMLParserGetFactorystr:String//生成解析器的具体实现,在后面会提到function createXmlParserreturn xmlParserXMLParserPostFactory.as//生成解析输出的 xml 的对象的工厂class XMLParserPostFactory implements AbstractFactory.var xmlParserfunction XMLParserPostFactorystr:String//生成解析器的具体实现function createXmlParserreturn xmlParser这样,我们读入某个 xml 字符串时,在 onLoad 里面加入//生成对留言板的留言列表解析的工厂var xmlParsernew XMLParserGetFactory“xmlParseGuestbookList”xmlParser XMLParserGetFactory. createXmlParser备注:抽象工厂模式是软件工程里最常用的设计模式之一,实现过程在于,需要某个类的实例时,通过某个工厂创建,而不是直接创建,坦白地说,它加大了开发工作量,但是对程序的层次性变得分明和降低耦合度有极大帮助。
2.生成器模式(builder):还是那个说法,我要吃东西就去相应的食堂窗口,但我不能吃食堂窗口,窗口里的东西也许不少,我要跟师傅说,要这个,这个,还有这个。
举例:我已经建立了 xml 解析器的工厂,现在要返回解析器本身,就让工厂创建,返回给我。
XMLParserGetFactory.as//生成解析读入的 xml 的对象的工厂class XMLParserGetFactory implements AbstractFactory.var xmlParserfunction XMLParserGetFactorystr:String//如果要求留言板列表解析器,就生成一个ifstr” xmlParseGuestb