Singleton Vs Singleton Factory

时间:2016-02-17 10:44:15

标签: ios objective-c design-patterns

我们的系统有很多模型对象(例如CarPedestrianRoad,...)

目前,他们所有人都有经理(CarManagerPedestrianManagerRoadManager)返回相应类别的单身人士。

建议的替代方案是拥有一个ManagerFactory单例,可以返回CarManagerPedestrianManagerRoadManager的实例。 (例如ManagerFactory.getInstance().getCarManager()

我们还为项目编写测试,关注的是如果我们将使用依赖注入,我们将需要一个实际的对象实例来注入管理器。

这个替代品是好的吗?在这种情况下你会将单身人士变成其他东西吗?

1 个答案:

答案 0 :(得分:0)

单件直接或单件工厂基本上是相同的东西 - 对某物的不透明引用 - 隐藏的依赖。通过全局文本搜索,您可以找到这些依赖关系,因此这两种选项都不会使情况变得更好或更糟。

依赖注入意味着您公开声明例如A工作它需要B的实例(或者符合协议C的实例是更好的依赖情况)。这要求您在某处实例化B并将其传递给A。

从测试的角度来看,依赖注入要优越得多,因为您通常希望创建B的模拟版本并使用它来测试A.测试会注入要使用的实例。测试单身是一种痛苦......

因此,理想情况下,涉及的第一个类将创建一个B实例并将其传递给需要它的其他类,并从那里传递该实例。