首页 / 软件开发 / Flex / 常用Flex IOC框架比较分析
常用Flex IOC框架比较分析2011-07-11 infoq.com 译:罗小平IOC(Inversion of Control),也称DI(Dependency Injection),是近年来在软件开发中变得非常流行的一种设计策略。众多的Flex开 发者,探索出了诸如Spring ActionScript、Parsley、Flicc和Swiz这样的IOC框架。什么是IOC?一言以蔽之,IOC是一种软件设计模式。借助IOC,可用一个独立的对象为其他对象的数据成员填充正确的实现,而不是由这些 对象自己负责此项工作。这样做的好处有两个。第一,可将对象的数据成员声明为接口,从而将对象与其具体实现分离(即契约式设计, design by contract)。第二,可从对象中删除创建逻辑,可以使对象的用途更为明确。IOC容器提供一个框架,你可借此以一致和宣告的形式使用这个模式。将此模式和接口结合起来,可以创建出易于测试、使用灵活的对象。 有关IOC模式更深入的讨论,请参看Martin Fowler的文章《Inversion of Control Containers and the Dependency Injection pattern》。java和.NET的IOC框架早已建立,在Flex社区,近来也有不小的进展。本文将讨论Flex中的一些IOC框架的工作原理、使用方法,并对这些框架进行比较。为了比较方便,我将在同一个工程(ProfileViewer)中 使用Spring ActionScript、 Parsley、Flicc和Swiz这几个框架。IOC的概念一般有两种最常见的对象配置方法:对象实例化(例如:var myObject = new Object())对象查找(例如:var myObject = registry.getMyObject())而利用IOC,你可在一个独立层中实例化应用程序要用到的对象,并传入它们所需的依赖。具体来说,最常见的实现方法也有两种:Setter注入(例如:instance.myObject = new Object())Constructor注入(例如:instance = new Instance( new Object() ))一个IOC框架,通常由如下三个部分组成:配置、工厂和注入机制。配置我们可以在配置中描述对象之间的关系。最常用的配置描述方法是在文件中声明。这样的文件有时候也被称为上下文文件(context file) 。也可以用元数据/注释(metadata/annotation),甚至直接在程序中描述配置。/工厂工厂负责配置的解析和所有对象的准备工作,程序一旦运行,就可以根据需要取得这些对象。在经典的Spring框架(最流行的Java IOC框架)中,所有对象(我称其为客户对象)都由IOC容器负责准备,并且它们以接口形式声明自己 的依赖。在配置文件中,被声明的依赖都被设置为对应的实现类。