代码之家  ›  专栏  ›  技术社区  ›  Cristian

两个模块和一个系列。如何处理?

  •  0
  • Cristian  · 技术社区  · 6 年前

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


    模块B需要服务

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


    =1个=
    在模块a中实现一个服务,并在其中使方法 getSomething
    在模块B中实现一个服务,并在其中使方法 getSomethingSimilar


    你没有得到模块的相互依赖性

    欺骗:
    因为这两个方法非常相似,所以基本上是在复制代码。


    =2个=
    使用模块a中的两个方法实现一个服务,并在模块B中使用该服务。

    赞成的意见:
    无代码重复
    两种方法都在同一个服务中


    模块相互依赖


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

    1 回复  |  直到 4 年前
        1
  •  1
  •   Vaibhav Gupta    6 年前

    我认为你可以用策略设计模式来解决这个问题

    有一个服务接口getSomething()

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

    这种方法结合了两者的优点,因为它减少了冗余并减少了耦合,即相互依赖2

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

    参考: https://en.wikipedia.org/wiki/Strategy_pattern