我无法理解台风documentation使用的术语。
所以看起来你基本上定义了一个TyphoonAssembly
,它包含了所有的对象。然后创建一个或多个TyphoonDefinition
来描述如何实例化对象。我假设这些定义是在实现中执行的。但是,这些TyphoonDefinition
位于文档的Types of Injections
部分下。
当使用其他iOC容器(如Spring)时,术语注入是指将构造的组件提供给依赖对象的过程,而不是注入到iOC容器本身。
我对文档的理解是错误的,还是使用的术语不同?
答案 0 :(得分:3)
如果它可以帮助你比较Typhoon和Spring,你可以想象一个TyphoonDefinition
和Spring bean一样:构建对象的蓝图,使用初始化器,以及任何属性设置器或者要调用的方法。
与Spring一样,您可以提供对另一个组件的引用或注入简单配置。
同样,像Spring一样,您可以选择将相关组件组合在一起。
事实上,Typhoon的内部模型与Spring非常类似,有后处理器等(创始人 - 我是 - 是Spring框架的贡献者,曾在SpringSource工作过一段时间)。有什么不同的是:
TyphoonDefinition
可以声明它们混合了静态和运行时依赖关系,后者在汇编接口上声明。这为实现工厂模式提供了一种快速而强大的方法,并避免编写样板代码。 主要原理是允许IDE重构和代码完成,而无需构建额外的工具支持。
其他一些差异:
“通过类型注入”(自动布线)仅适用于属性(ObjC运行时不会为初始化程序或方法参数保留此信息)。
Typhoon提供专为移动和桌面软件设计的默认范围。
您可能已经看到了一些示例,其中定义已经注入了程序集本身。这与Spring的BeanFactoryAware类似,没有明确地将您的代码耦合到Typhoon(非侵入性)。它允许从一个对象图(例如视图控制器)进行到另一个 - 这是移动和桌面应用程序中的常见要求。
最后,Spring及其产品组合产品的基础一方面是'依赖注入',另一方面是'AOP'(用于事务管理,安全性等)。在这一点上,Typhoon只进行依赖注入,虽然我们觉得有一个正式的AOP框架,但是使用切入点表达式语言会很有用。
Typhoon的早期版本允许Spring-style XML,但这不是Objectives-C开发人员的流行功能。