【发布时间】:2019-03-06 17:41:54
【问题描述】:
我在我的项目中使用模板方法模式,如下所示
class Template
{
public:
void algorithm();
{
A();
B();
}
private:
virtual void A()=0;
virtual void B()=0;
}
我有一些子类以不同的方式实现方法 A 和 B。
但现在我需要一个新类 Template2 来实现稍微不同的算法。
class Template2
{
public:
void algorithm();
{
A();
B();
C();
}
private:
virtual void A()=0;
virtual void B()=0;
void C()
{
//some stuff
A();
//some stuff
B();
}
}
C 在所有子类中都是相同的,所以我没有将其设为虚拟。
现在我基于 Template2 创建了一个新的继承层次结构,但这似乎很愚蠢,因为我必须将每个子类的代码复制并粘贴到这个新层次结构中。
有没有更优雅的方式呢?
编辑
对不起,我没有说清楚。
现在我有两个继承层次结构。
1.一个抽象类Template和一些子类A1,A2,A3,A4...
2.一个抽象类Template2和一些子类B1,B2,B3,B4...
这很好用,但我想知道是否有办法以某种方式合并这两个层次结构,因为 A1 和 B1 具有相同的代码,只是它们分别来自 Template 和 Template2。
解决方案是否是模板方法模式与我无关
bcperth 和 Spotted 的答案都对我有用 :)
非常感谢。
【问题讨论】:
标签: oop design-patterns ooad