台风入门

标签 typhoon

我无法理解台风使用的术语 documentation

看来您基本上定义了一个 TyphoonAssembly 并且它包含所有对象。然后创建一个或多个 TyphoonDefinition 来描述如何实例化该对象。我假设这些定义是在实现中执行的。但是,这些 TyphoonDefinition 位于文档的注入(inject)类型 部分。

当使用其他 iOC 容器(例如 Spring)时,术语注入(inject)是指将构造的组件提供给依赖对象的过程,而不是注入(inject)到 iOC 容器本身。

我对文档的理解是否错误,或者术语的使用方式是否不同?

最佳答案

如果它可以帮助您将 Typhoon 与 Spring 进行比较,您可以将 TyphoonDefinition 视为 Spring bean:构建对象的蓝图,带有要使用的初始化程序,以及任何要调用的属性 setter 或方法。

像 Spring 一样,您可以提供对另一个组件的引用或注入(inject)简单的配置。

同样,像 Spring 一样,您可以选择将相关组件组合在一起。

事实上,Typhoon 的内部模型与 Spring 非常相似,有后处理器等(创始人——也就是我——是 Spring 框架贡献者,曾在 SpringSource 工作过一段时间)。不同的是:

  • Typhoon 程序集在构建时返回定义。
  • 在运行时,装配接口(interface)用于返回构建的组件。这避免了使用“魔术字符串”
  • 同样,对其他组件的引用不需要“魔术字符串”——而是使用方法名称。
  • TyphoonDefinition 可以声明它们具有静态和运行时依赖关系的混合,后者在程序集接口(interface)上声明。这提供了一种快速而强大的方法来实现工厂模式,并避免编写样板代码。

主要理由是允许 IDE 重构和代码完成,而无需构建额外的工具支持。

其他一些差异:

  • “按类型注入(inject)”( Autowiring )仅适用于属性(ObjC 运行时不会为初始化器或方法参数保留此信息)。

  • Typhoon 提供了专为移动和桌面软件设计的默认范围。

  • 您可能已经看到过一些示例,其中定义已注入(inject)程序集本身。这与 Spring 的 BeanFactoryAware 类似,无需显式地将代码耦合到 Typhoon(非侵入式)。它允许从一个对象图(例如 View Controller )转到另一个对象图 - 这是移动和桌面应用程序中的常见要求。

最后,Spring 及其组合产品的基础一方面是“依赖注入(inject)”,另一方面是“AOP”(用于事务管理、安全性等)。目前,Typhoon 只进行依赖注入(inject),尽管我们认为正式的 AOP 框架以及切入点表达式语言会很有用。

Typhoon 的早期版本允许 Spring 风格的 XML,但是这在 Objectives-C 开发人员中并不是一个流行的功能。

关于台风入门,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26466902/

相关文章:

ios - 是否可以在 Typhoon 中重用具有运行时参数的定义?

objective-c - 台风:如何让一个实例符合生产协议(protocol),另一个实例用于测试?

ios - 从程序集内部修补 Typhoon 程序集

swift - 是否可以在 Typhoon 中注册协议(protocol)以便在 swift 中与 TyphoonComponentFactory.componentForType 一起使用

git - cocoapods 安装过程中引用不是树 : f0a7. ..3e8c

iOS Typhoon DI 框架替代 objective-c 中的单例

ios - 台风 Storyboard与手动装配激活集成

ios - 接收未声明的私有(private)属性(property)选择器