我正在使用策略设计模式实现 2 个不同的具体策略,第二个重用第一个的代码,同时对其进行扩展。我想知道这是否“破坏”了策略设计模式的优势,或者这是否有什么不同?有没有更好的方法来做到这一点,比如让一个抽象类实现策略接口,并让这两个策略从那个抽象类继承?
看待这个问题的另一种方式是:策略设计模式的优势是否源于这样一个事实,即可以添加和删除不同的策略而不影响任何其他策略?如果是这样,我应该将代码复制到更复杂的具体策略吗?
在我的特殊情况下,我正在实施两种不同的论文排序策略:
第一个根据它们与某些关键字的相似程度对所有文章进行排序。
第二种策略首先对所有作者进行排序,然后排序调用第一个具体策略根据每个作者的文章与关键字的相似程度对它们进行排序。
这是一个合适的设计吗?