0
在我的应用程序中,我有一个服务管理器来处理我所有的请求。现在,此服务管理器使用外部服务来完成某些特定类型的请求。使用GUICE使用外部服务的设计服务管理器类
例如,请考虑下面的示例代码:
Class ServiceManager{
private final A a;
private final B b;
private ExternalService externalService;
@Inject
public ServiceManager(A a, B b)
{
this.a =a;
this.b =b;
}
public void processIncomingRequestUsingExternalService(){...}
}
现在,为了初始化ExternalService哪种方法更好地使用吉斯
- 使用setter注入,在未来有可能是“N”数字此服务管理器可能需要使用不同类型的外部服务。
- 或者使用构造函数注入,正如我用于类A和B对象,这是我的应用程序的内部类。
注意: - 这里ExternalService是外部服务的助手。
构造注射>全部(例如http://olivergierke.de/2013/11/why-field-injection-is-evil/) 。全能的马槽班也很糟糕。单一责任原则仍然适用如此之大n =通常不好的设计。 – zapl
@zapl我的观点与大n是说2 - 3外部服务,我的经理可能不得不使用。将所有这些外部服务助手添加到构造函数中会不错。 –