我有一个服务类,它依赖于多个其他服务类。
class Service1 {
}
class Service2 {
}
class Service3 {
}
class Service4 {
}
class Service5 {
public Service5(Service1 s1, Service2 s2, Service3 s3, Service4 s4);
}
是否存在设计模式/最佳实践,我可以避免将多个服务传递给Service5构造函数。 当其他服务(service1,service2等)需要为某些执行调用service5时,它会变得复杂,因为它可能导致循环依赖。
我能想到的一个解决方案是拥有一个ServiceCollection静态类,其中包含所有服务的getter。
答案 0 :(得分:1)
我能想到的一个解决方案是拥有一个ServiceCollection静态类 所有服务都有吸气剂。
应该真正避免检索Service
对象的静态方法。它使得它们的依赖关系没有明确定义,并且可以根据用户类进行切换。
作为替代方案,您可以定义一个工厂类,它提供检索Service
实例的实例方法。
就个人而言,我会使用相当依赖注入来解决这个问题。这样,您可以获得更少的样板代码,并且您不会在整个代码中分散工厂方法调用。
当其他服务(service1,service2等)变得复杂时, 需要为某些执行调用service5,因为它可能导致循环 依赖性。
如果您的类实例化中存在循环依赖关系,则应强烈重新考虑实际设计。