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