【发布时间】:2017-07-10 12:55:03
【问题描述】:
假设我有一门课Person。这个类依赖于一个名为MessagingService的服务;具有一种方法sendMessage(String msg) 的接口。今天有三个类实现了这个接口:
(1)EmailMessagingService
(2)TextMessagingService
(3)VoiceMessagingService
(未来可能会有更多的实现)。
Person、EmailMessagingService、TextMessagingService 和 VoiceMessagingService 都属于不同的团队,是独立的 maven 项目和独立的 git repos,
问题:
(1) 接口MessagingService可以做什么?那也应该是一个单独的 maven 项目和 git repo,以便所有四个项目:Person、EmailMessagingService 和 TextMessagingService、VoiceMessagingService 都依赖它?或者它可以/应该成为Person 项目的一部分吗?
(2)如果可以是Person项目的一部分,那三个实现项目怎么可能只依赖接口MessagingService。即使 Person 项目的一部分,MessagingService 仍然可以作为单独的工件吗?
(3) 我想要一个Person 的实例与每个实现一起打包,并在生产中单独运行它。所以Person 的一个实例使用EmailMessagingService。 Person 的第二个实例使用 TextMessagingService。第三个实例使用VoiceMessagingService。以这种方式包装Person 的最佳方法是什么?我应该让Person 依赖于所有三个项目吗?我可以让Person 不依赖于任何实现类吗?
【问题讨论】:
标签: java maven dependency-injection interface