我们有一个有很多模型对象的系统(例如Car,Pedestrian,Road,.)
目前,它们都有管理器(CarManager、PedestrianManager、RoadManager),它们返回相应类的单例。
另一种建议是使用ManagerFactory单例,它可以返回CarManager、PedestrianManager、RoadManager的实例。(例如ManagerFactory.getInstance().getCarManager())
我们还为项目编写了测试,关注的是,如果我们使用依赖注入,我们将需要一个对象的实际实例来注入管理器。
这是一个好的选择吗?在这种情况下,你能把单身汉换成别的东西吗?
发布于 2016-02-17 11:11:13
单例直接或单例工厂基本上是相同的--对某物的不透明引用--隐藏的依赖关系。通过全局文本搜索,您可以找到这些依赖项,因此这两个选项都不会使情况变得更好或更糟。
依赖注入意味着您公开声明,例如,A需要B的一个实例(或者一个符合协议C的实例是一个更好的依赖情况)。这要求您在某个地方实例化B并将其传递给A。
从测试的角度来看,依赖注入要好得多,因为您通常希望创建一个模拟版本的B并使用它来测试A。测试单身是一种痛苦..。
因此,理想情况下,所涉及的第一个类将创建一个B的实例,并将其传递给其他需要它的类,然后从那里传递该实例。
https://stackoverflow.com/questions/35454406
复制相似问题