2016-10-18 79 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外部服務,我的經理可能不得不使用。將所有這些外部服務助手添加到構造函數中會不錯。 –

回答