假設我有一個類Person
。該課程取決於名爲MessagingService
的服務;一種方法的接口sendMessage(String msg)
。有三類今天實現這個接口:
(1)EmailMessagingService
(2)TextMessagingService
(3)VoiceMessagingService
(更實現可以會在未來)。Maven項目組織:一個接口多個實現
人,EmailMessagingService,TextMessagingService和VoiceMessagingService都是由不同的團隊所擁有,是獨立的Maven項目,以及獨立的git回購協議,
問題:
(1)我能與接口MessagingService
做?這應該是一個單獨的maven項目和git回購,所以所有四個項目:Person
,EmailMessagingService
和TextMessagingService
,VoiceMessagingService
取決於它?或者可以/是否應該成爲Person
項目的一部分? (2)如果它可以作爲Person
項目的一部分,我如何才能讓這三個實施項目僅取決於接口MessagingService
。 MessagingService
仍然是一個單獨的神器,即使它是Person
項目的一部分? (3)我想要一個與每個實現打包在一起的Person
實例,並分別在生產環境中運行它。因此Person
的一個實例使用EmailMessagingService
。而Person
的第二個實例使用TextMessagingService
。第三個例子使用VoiceMessagingService
。這種方式去包裝Person
最好的方法是什麼?我應該有Person
取決於所有三個項目?我能否擁有它,以便Person
不依賴於任何實現類?