robotlegs 全面解读(二)
—swiftsuspenders解读
通过上一篇文章相信大家对基于元数据的依赖注入有了很好的理解。其实讲swiftsuspenders的文章在上网已经有很多,更有甚者对源码一一做了注解。但本人感觉一点点的阅读源码着实让人头痛。所以想从宏观上跟大家一起学习swiftsuspenders的工作机制。
首先我们先说一下它的主要组成部分;
两个主要的类:
Injector;注入器:我们通过它来实现对对象的映射及注入。
InjectionConfig;注入配置:通过它来记录存储我们的映射。(当需要给某对象的某个注入点做注入时,需要获得对应的注入配置)
两个包:
Injectionpoints;注入点对象包:此包内为所有类型的注入点对象,包括构造注入点(ConstructorInjectionPoint)、属性注入点(PropertyInjectionPoint)、方法注入点(MethodInjectionPoint)。
Injectionresults;返回类型对象包:其实就是为了表示注入的时候实际注入的是什么对象,是所映射对象本身(InjectValueResult)还是所映射对象的新实例(InjectClassResult)还是所映射对象的唯一实例(InjectSingletonResult)还是其他自定义的对象(InjectOtherRuleResult);
其他还有表示异常的InjectorError,和一个存放公共方法的Reflector对象。
下边我们以属性注入为例,来简述一下它的工作流程。
映射:
首先我们需要通过Injector的mapValue()方法映射一个需要注入的对象。如:
mapValue(AClass,myClass)
我们映射一个AClass的实例对象aClass,此时Injector会创建一个InjectionConfig
var config : InjectionConfig =new InjectionConfig(AClass);
然后设置此config对象的返回类型为InjectValueResult(返回映射对象本身,因为是属性映射)。
config.setResult(new InjectValueResult(useValue));
然后将此config存入映射字典m_mappings;
至此映射部分结束。
注入:
例:我们需要得到类Bclass的一个实例,此Bclass需要注入之前的aClass。
var bClass:BClass=injector. getInstance (BClass);
此时Injector会通过读取BClass的xml描述,得到表示BClass的注入点描述对象InjecteeDescription,此对象里边的injectionPoints记录了BClass里的所有属性、方法注入点。此处为一个属性注入点—PropertyInjectionPoint。
Injector会根据这些注入点得到对应的注入配置(即刚才的config对象),调用config.getResponse()得到需要注入的对象进行注入。
子注入器
在Injector里边有创建子注入器的方法createChildInjector();那子注入器有什么用处了?
通过阅读源码我们会发现,父注入器的映射字典m_mappings对子注入器来说是可读的,也就是说子注入器可以直接读取父注入器的映射资源。但子注入器又有会有自己的的映射字典。在注入时,子注入器会首先读取自身的映射资源,若没有会往上从父注入器里找,若还没有则会继续往上级父注入器查找。
子注入器在解决某些特殊问题上提供了方便(如经典的机器人退问题)。最为重要的是为robotlegs的多模块实现提供了便利。使各个模块即可以使用主模块的资源,又可以有自己内部的资源,平级的模块之间互不干涉。
作者:王闯
email :wangchuang1113@163.com;
分享到:
相关推荐
Unity3d Robotlegs Demo是一个基于Unity3D游戏引擎的示例项目,它展示了Robotlegs框架在实际开发中的应用。Robotlegs是一个广泛使用的MVC(Model-View-Controller)框架,适用于ActionScript 3和JavaScript,但也有...
RobotLegs是一个强大的MVC(模型-视图-控制器)框架,主要应用于ActionScript和AS3编程语言,常用于创建富互联网应用程序(RIA)或Flex和Flash项目。本实例是RobotLegs框架的一个演示程序,名为"RobotLegs演示程序...
**Robotlegs框架详解** Robotlegs是一款非常流行的ActionScript 3(AS3)和Flex应用程序框架,它提供了一种模块化、可扩展的方式来构建灵活且易于维护的项目。本实例将带您了解如何在Flex环境中使用Robotlegs框架...
【Robotlegs 框架详解】 Robotlegs 是一个开源的ActionScript 3和TypeScript的MVC(模型-视图-控制器)框架,它为游戏、应用程序和富互联网应用(RIA)提供了一种灵活和可扩展的架构。萝卜腿,即Robotlegs,因其...
Robotlegs是一个开源框架,主要用于ActionScript语言的MVCS(Model-View-Controller-Service)架构模式,用于创建Flex和AIR等Adobe Flash平台应用。Robotlegs具备灵活的结构和松耦合的设计,使其成为面向对象编程和...
4. **bin**:这个目录通常包含编译后的二进制文件,如库或可执行文件。在AS3环境中,这可能包括SWC文件,它是ActionScript库的打包形式,可以直接导入到Flash Builder或Flex项目中。 5. **docs**:文档目录,包含...
采用Robotlegs2.2框架做的Flex简单登录例子,AIR项目,FLEX SDK为4.6.0,Flash Builder4.7开发,没有注释,对Robotlegs框架感兴趣的可以看下。
//命名注入注入器类的映射注入在Robotlegs中,依赖注入是通过Injector类进行的。你可以通过创建映射来指定类或接口与其实现之间的关系。例如,如果你有一个名为`MyService`的服务类,你可以这样做: ```...
介绍RobotLegs框架,为初学打下好的基础
【标题】:“(Robotlegs五子棋)HelloRobotlegs” 【描述】:这篇博客文章并未提供具体的描述,但根据标题可以推断,它可能是一个关于使用Robotlegs框架开发五子棋游戏的教程或示例项目。Robotlegs是一个流行的...
robotlegs-sharp-framework, C# 应用程序框架从Robotlegs移植到 ActionScript 3 RobotlegsRobotlegs sharp是 C# 从 Robotlegs移植到 AS3的应用程序框架。 它提供:依赖项注入模块管理命令管理视图管理即插即用扩展你...
《深入探索Starling、Feather与Robotlegs框架》 在当今的移动和Web开发领域,高效、跨平台的游戏和交互式应用开发变得越来越重要。在这个背景下,Starling、Feather和Robotlegs框架因其强大的功能和易用性而备受...
《ActionScript开发者指南至Robotlegs》一书由Joel Hooks和Stray(Lindsey Fallow)撰写,出版于2011年,是针对ActionScript开发者深入理解并运用Robotlegs框架的一部详尽指南。Robotlegs是一款轻量级的ActionScript...
Robotlegs 框架是基于ActionScript 3.0的一款著名的应用程序框架,它为游戏、富互联网应用程序(RIA)和其他基于Flash平台的项目提供了强大的架构支持。此资源"robotlegs guide for actionscript developers source ...
Robotlegs 框架是基于ActionScript 3的轻量级MVC(Model-View-Command)框架,专为Flex和Adobe AIR应用设计。V1.5.2是该框架的一个稳定版本,提供了高效和清晰的架构来组织和管理应用程序的组件。下面将详细介绍这个...
### ActionScript开发者指南:Robotlegs框架详解 #### 引言 《ActionScript开发者指南到Robotlegs》是一本针对ActionScript开发者介绍如何使用Robotlegs框架的书籍。本书由Joel Hooks和Stray(Lindsey Fallow)...