我正在使用策略设计模式实现2个不同的具体策略,第二个重复使用来自第一个的代码,同时花费它。我想知道这是否“打破”了战略设计模式的优势,或者这是否有所不同?有没有更好的方法来做到这一点,例如让抽象类实现策略接口,并让两个策略继承自该抽象类?
另一种看待这个问题的方法是:战略设计模式的优势源于这样一个事实:可以添加和删除不同的策略而不影响任何其他策略吗?如果是这样,我应该将代码复制到更复杂的具体策略吗?
在我的特定情况下,我正在实施两种不同的论文分拣策略:
首先根据与某些关键字的相似程度对所有文章进行排序。
第二种策略首先对所有作者进行排序,然后对第一个具体策略进行排序,根据每个作者的论文与关键词的相似程度对其进行排序。
这是一个合适的设计吗?
答案 0 :(得分:0)
。我想知道这是否“打破”了策略设计模式的优势,或者这是否有所不同?
复制代码很糟糕;如果你必须在一个地方修复它,那么你可能会忘记将修复程序复制到所有副本中。想想那些必须支持这个混乱的可怜的灵魂!
如果策略有公共代码,那么你可以
将公共代码放入实用程序类并添加聚合/添加公共类作为两个实现的成员,
将公共代码放入基类并在两个实现中继承此类
聚合通常比继承更受青睐。