IOC:Inversion of Control(反转控制) DI:Dependency Injection(依赖注入) IOC一词来源于Martin Fowler发表的一篇文章,《Inversion of Control Containers and the Dependency Injection pattern》 那是什么被反转控制了?实际上指的是对象之间的依赖关系被反转控制了,原本由类自身维护所需对象实例的创建现在转由外部的IOC容器来维护。这种维护对象实例化的负责方被反转了。而依赖注入(DI)呢?意思更加明确,即获得所依赖对象的方式是由IOC容器从外部直接注入进来,而非我们通常的使用new的方式在类中来完成。 在JAVA中,大家熟知的Spring框架其核心内容便是反转控制及依赖注入。 使用IOC(DI)有什么好处?大致来说有两点: 1、类或模块之间的耦合度降低了,代码更易重用和维护 2、更加便于编写可测试的代码 随着面向对象的Actionscript3.0的推出,尤其是Flex在企业级应用中越来越多的应用,Flex(Flash)应用框架也越来越多,也有不少框架实现了IOC的功能,当然也包括一些独立的IOC容器框架。 在as3中实现IOC,核心是使用as3中的反射来完成的,相对来说,as3中的反射比起Java来说确实弱了不少,主要是利用describType返回的属性XML进行解析,而这样对性能会有一定的影响,若在as3中大量使用反射的话,一定要考虑到这一点. 另外,关于使用的配置文件,有以XML来进行的,有以MXML来实现的,也有两都均支持的,需注意的是以XML来实现的好外是我们可以直接更改外部XML而不需要重新编译相应源文件,而若使用MXML的话当你更改配置的话需要重新进行编译. 当然,目前以as3实现的IOC也有很多了,主要两在块: 独立的IOC容器: Flicc smartypants-ioc (名字取得不错,呵呵) SwiftSuspenders (比较小巧) 实现了IOC功能的完整框架: Spring Actionscript(原名:Prana,此框架现已归入Springsource,几乎是Spring IOC实现的as3翻版,熟悉Spring的Java开发人员几乎不需要什么过渡就能理解) Swiz(也属于比较成熟的框架了) Robotlegs(MVCS框架,可集成使用其它任何DI容器,最初建立在smartypants-ioc,目前自身使用SwiftSuspenders) Parsley(由PowerFlasher开发,个人比较喜欢这个框架,本站前面由Daniel也写了一篇Parsley的入门文章,很不错~~~严格意义上来说它不算一种MVC框架,属于一套Toolkit,你完全可以使用自己的MVC方式来组织) 另外这里一份代码,一个Sample,以不同的IOC框架来实现,应该对大家学习比较有用: http://code.google.com/p/flex-ioc-examples/ 希望大家能找到适合自己项目使用的IOC容器^_^
-
分类
-
分页
最新评论
- Silver: 这个当然可以
- 九: 看了下 有些地方看不懂 可以把城市地图换成自己制作的地图吗?
- 金仔: broken blog 。。。
- Daniel Yang: 要改成其他城市的, 估计需要一些时间—代码并不需要怎么改动. 1.看看eds的tile文件命名规则. 2.tile的范围不一样.每个缩放级别都不一样.
- subarashii: 您好,咨询一个跨域访问的问题 现在的flashplayer如果跨域访问的话,必须要在服务器 根目录下放置crossdomain文件,不能通过Securi ty.loadPolicyFile方法加载了。...
- hillayan: 不好意思 这么长时间没有给您答复 我的简历已经发到您的邮箱了 请查阅 谢谢
- gordon.pangsj: Hi,我最近想用你做的这个地图,可是我发现我改不了地图城市, 首先,我发现不仅你说这2个类要改,还有Eds2DBound, Eds3DBound这2个,貌似是因为整个地图范围,还...
- Silver: 一直在招人!请发email: silver.lao[A]gmail.com
- hillayan: 请问 您那里还招人吗
- lincoln: lincolncao@163.com 麻烦发我个注册码,谢谢!
-
存档