战略设计模式中不同具体战略之间的依赖关系?

时间:2013-10-27 20:39:36

标签: oop design-patterns dependencies strategy-pattern

我正在使用策略设计模式实现2个不同的具体策略,第二个重复使用来自第一个的代码,同时花费它。我想知道这是否“打破”了战略设计模式的优势,或者这是否有所不同?有没有更好的方法来做到这一点,例如让抽象类实现策略接口,并让两个策略继承自该抽象类?

另一种看待这个问题的方法是:战略设计模式的优势源于这样一个事实:可以添加和删除不同的策略而不影响任何其他策略吗?如果是这样,我应该将代码复制到更复杂的具体策略吗?


在我的特定情况下,我正在实施两种不同的论文分拣策略:

  1. 首先根据与某些关键字的相似程度对所有文章进行排序。

  2. 第二种策略首先对所有作者进行排序,然后对第一个具体策略进行排序,根据每个作者的论文与关键词的相似程度对其进行排序。

  3. 这是一个合适的设计吗?

1 个答案:

答案 0 :(得分:0)

  

。我想知道这是否“打破”了策略设计模式的优势,或者这是否有所不同?

复制代码很糟糕;如果你必须在一个地方修复它,那么你可能会忘记将修复程序复制到所有副本中。想想那些必须支持这个混乱的可怜的灵魂!

如果策略有公共代码,那么你可以

  • 将公共代码放入实用程序类并添加聚合/添加公共类作为两个实现的成员,

  • 将公共代码放入基类并在两个实现中继承此类

聚合通常比继承更受青睐。