代码改变世界

【原】AS3抽象工厂、反射工厂 实例讲解

2010-05-22 09:52  bugfly  阅读(522)  评论(0编辑  收藏  举报

   本文语言使用的是AS3脚本,通过设计-编码这一标准开发流程阐述,拿出抽象工厂和反射工厂两个实现过程例子,用精简的信息去表达意图。抽象工厂的局限性在于,它没法消除new这些碎片耦合部分,而new碎片散落在客户端上,堆积到一定程度就出现坏味道,甚至出现维护问题,不容易修改,而通过反射机制可以缓解这种new碎片散落程度。如果要优雅地解耦,必然要使用框架,据我所知AS3是有其支持的框架的,由于种种问题,本人没有研究过AS3的框架,不过通过AS3自身的反射机制可以模拟一个解释器去到达最大限度解耦。相信不用我对图片太多解释你也可以明白意思了。而这里涉及到一些UML知识,真有需要请自己查找。

(1)抽象工厂。

 

 

 

 

 

 

(2)反射工厂。

 

 


 
   配置文件test.xml




    结语,对于抽象工厂我就不多解释了,反射工厂就有几点补充,可以看出,反射工厂没有在代码区域耦合一点的实现代码,都是通过抽象层面去交互,而也是它取代抽象工厂的原因,而不好的地方是要预先引入产品实体类,这个其实也是不得不做的,根源是AS3的机制问题,而这一点不影响区别两种工厂的优缺点。反射工厂的优势是把变化隔离出外部文件,而消除了具体对象使用的判断逻辑,没有new碎片了,而这是抽象工厂无法做到的,抽象工厂无法摆脱这些判断,而这些判断必然会导致耦合加深,终究会出现new去生成对象。简短例子,希望对你有帮助。