2017-07-10 32 views
0

假設我有一個類Person。該課程取決於名爲MessagingService的服務;一種方法的接口sendMessage(String msg)。有三類今天實現這個接口:
(1)EmailMessagingService
(2)TextMessagingService
(3)VoiceMessagingService
(更實現可以會在未來)。Maven項目組織:一個接口多個實現

人,EmailMessagingService,TextMessagingService和VoiceMessagingService都是由不同的團隊所擁有,是獨立的Maven項目,以及獨立的git回購協議,

問題:

(1)我能與接口MessagingService做?這應該是一個單獨的maven項目和git回購,所以所有四個項目:PersonEmailMessagingServiceTextMessagingService,VoiceMessagingService取決於它?或者可以/是否應該成爲Person項目的一部分? (2)如果它可以作爲Person項目的一部分,我如何才能讓這三個實施項目僅取決於接口MessagingServiceMessagingService仍然是一個單獨的神器,即使它是Person項目的一部分? (3)我想要一個與每個實現打包在一起的Person實例,並分別在生產環境中運行它。因此Person的一個實例使用EmailMessagingService。而Person的第二個實例使用TextMessagingService。第三個例子使用VoiceMessagingService。這種方式去包裝Person最好的方法是什麼?我應該有Person取決於所有三個項目?我能否擁有它,以便Person不依賴於任何實現類?

回答

0

好廣告1):

我將創建類似的東西包含您MessagingService界面「公地」的項目。所有其他4個項目(Person +你的3個實現)都包含這個公共項目作爲Maven依賴項。 Person也包含3個實現作爲依賴項。

廣告2)看到我的回答關於你的第一個問題。這是一樣的原則。

廣告3)我不知道你使用的是什麼樣的DI。您可以使用其限定符注入所有3個服務。那麼當你創建你的Person對象時,你設置了所有3個服務(通過構造函數或setter)