我有一个应用程序,它在许多应用程序的方法和类中使用了大约11个不同的Singleton实例;它正在失控,我想用依赖注入来替换它们,比如Typhoon。但是,我无法找到任何文档、示例或提到如何用依赖注入替换单例,包括Typhoon。例如,是否使用多个Typhoon实例,将每个单例替换为Typhoon实例?
发布于 2014-12-31 03:49:12
编辑: 朝圣者是台风的官方接班人!
这里是台风制造者。是的,依赖注入的一个用途是提供单例的好处,而不是缺点。但是,您不一定需要一个库来应用依赖项注入模式并替换您的单例。实际上,通过查看如何在不使用框架的情况下实现它,了解这种模式是有帮助的:
好莱坞原则:不要打电话给我们,我们会叫你
高级类,比如视图控制器,让协作者来完成他们的工作。正如你所提到的,你有大约11个这样的。现在有两种方法可以将您的类与协作者结合起来:
寻找(打电话)合作者:
initWithNibName:(NSString *)nibName bundle:(NSBundle *)bundle
{
self = [super initWithNibName:nibname bundle:bundle];
if (self) {
_serviceClient = [MyServiceClient sharedInstance];
}
} 上面的方法有效,但不好,因为:
另一种选择:
只需通过init方法或属性将协作者传递进来。
initWitServiceClient:(id<ServiceClient>)serviceClient
{
self = [super initWithNibName:@"MyNib" bundle:[NSBundle mainBundle];
if (self) {
_serviceClient = serviceClient;
}
} ,这和刚才有什么不同。。。传递参数?
与其硬连接协作者,不如将其作为参数传递进来。但是现在下一节课是硬连线的!所以您一直这样做,直到您有了一个顶级的程序集类,它知道如何从各个部分构建您的视图控制器(和其他类)。如果你这样做:
现在使用台风:
每个普通应用程序都会保留一个Typhoon实例。它会容纳你的单身人士。
如果在学习了以上资料后,您有一个更具体的问题,我们将非常乐意帮助您。
https://stackoverflow.com/questions/27713682
复制相似问题