2016-10-18 51 views
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是外部服务的助手。

+1

构造注射>全部(例如http://olivergierke.de/2013/11/why-field-injection-is-evil/) 。全能的马槽班也很糟糕。单一责任原则仍然适用如此之大n =通常不好的设计。 – zapl

+0

@zapl我的观点与大n是说2 - 3外部服务,我的经理可能不得不使用。将所有这些外部服务助手添加到构造函数中会不错。 –

回答