java最好有多个具有相同依赖关系的嵌套类,还是一个具有更大范围的嵌套类?
在我的Spring boot应用程序中,我创建了一个工厂,用于创建具有相同接口和依赖项的不同对象,如下所示
@Component
public class FarmFactory {
@Autowired
private FarmRepo farmRepo;
public IFarm create(FarmType type) {
if (type == type.APPLE) {
return new AppleFarm(farmRepo);
} else if (type == type.ANIMAL) {
return new AnimalFarm(farmRepo);
} else {
return new EmptyFarm(farmRepo);
}
}
}
我想知道是否最好通过将FarmRepo依赖项注入farm的每个子类(apple、animal、empty)来限制其范围。或者,最好在工厂的更高范围内保留一个依赖项
或者,可以将依赖项FarmRepo传递到类型为的create方法中,但不确定依赖项范围的经验法则是什么
# 1 楼答案
我假设您的IFarm实现是模型类。在模型中有一个存储库不是一个好做法。您应该考虑将不同的IFARM实现创建到FAMREPO。
如果IFarm实现是某种管理业务逻辑的服务类,那么您应该让spring处理它,将FarmRepo实例注入到它们中。在这种情况下,你最好考虑使用抽象类,而不是使用IFARM,因为FravePo是它们之间的一种常见依赖关系。p>
使用一个简单的工厂方法来实例化所需的运行时类型并没有错,如果需要,它需要在某个地方进行,它可以帮助您获得OCP(开-关原则)方面的有效设计,防止您根据类型参数更改行为,而不是使用多态性