两个模块和一项服务。如何处理?

问题描述 投票:0回答:1

情况:模块A;模块B;服务;

模块A需要service.getSomething()模块B需要service.getSomethingSimilar()

有一些实现的变体。其中一些是:


= 1 =在模块A中实现服务,并在其中创建方法getSomething在模块B中实现服务,并在其中创建方法getSomethingSimilar

优点:您没有模块的依赖性

缺点:因为这两种方法非常相似,所以您基本上是在复制代码。


= 2 =使用模块A中的两种方法实现服务,然后在模块B中使用该服务。

优点:没有代码重复两种方法都在同一服务中

缺点:模块相互依赖性


那么这种情况下最好的方法是什么?

java service module dependencies
1个回答
1
投票

我认为您可以针对此问题使用策略设计模式

具有服务接口getSomething()然后进行服务实现getSomethingImpl()

模块A和B都将为自己调整的getSomething接口提供它们自己的实现,现在,您可以将getSomethingImpl设置为两个模块的所需实现,如果需要,您可以稍后再创建新的实现。

此方法结合了两者的优点,因为它减少了冗余并减少了耦合,即彼此之间的相互依赖性

可能的缺点是,虽然代码现在更易于维护,但此实现需要一些额外的类和代码

Refer:https://en.wikipedia.org/wiki/Strategy_pattern

© www.soinside.com 2019 - 2024. All rights reserved.