class Base{
vitrual void do() = 0;
}
class ChildA : public Base{
void do(){ cout<<"childA do";}
}
这就是模板方法模式啦。它就是一个面向对象的多态,而研究设计模式这帮人,把多态玩到了极致。所以模板方法模式是其他设计模式的基础。
这样结束感觉太儿戏了,那就扩展一下。
既然有了继承,那么实际情况是还有 ChildB, ChildC继承了Base。 那么大家都会实现do()函数,基本就会出现有相同的东西大家都写了一遍。 那么Base类会变成
class Base{
void do(){
publicDo();
customizeDo();
}
void publicDo() { "this is publicDo"}
virtual void customizeDo() = 0;
}
子类实现的是 customizeDo()只去做自己变化的东西。 对于客户端来说,使用并没有任何改变。这就是多态的魅力,只要设计的够优美,维护起来就非常轻松。