我有一个在几个地方注入的 A 类。我想在任何地方注入相同的 A 实例 - 有点像单例但有注入。
台风可以做到这一点吗
Typhoon 有三个范围可供您使用,TyphoonScopeSingleton、TyphoonScopeLazySingleton和TyphoonScopeWeakSingleton。
要设置组件的范围:
- (PFRootViewController *)rootViewController
{
definition.scope = TyphoonScopeSingleton;
}
使用这个范围提供了单例的所有优点,而 DI 模式避免了这些缺点。
更多关于台风范围的信息:
许多其他语言的 DI 容器的默认范围是单例,而在 Typhoon 中,默认范围是TyphoonScopeObjectGraph
. 具有默认的单例范围对于服务器环境是有意义的,其中应用程序可能在给定时间为任何用例提供服务。
同时,Typhoon 针对移动和桌面环境,因此对象图范围旨在将程序集加载到内存中(视图控制器示例),然后在进入另一个用例后将其丢弃。任何共享引用,例如指向父级(例如委托)的循环依赖项都将被共享。
当然,虽然这是默认设置,但在某些情况下需要其他范围。更多信息可以在用户指南的范围部分找到。