模板方法模式定义:
定义一个操作中的算法骨架,而将一些实现步骤延迟到子类当中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
模板方法解析:
模板方法模式是比较简单的一种设计模式,但是它却是代码复用的一项基本的技术,在类库中尤其重要,它遵循“抽象类应当拥有尽可能多的行为,应当拥有尽可能少的数据”的重构原则。作为模板的方法要定义在父类中,在方法的定义中使用到抽象方法,而只看父类的抽象方法是根本不知道怎样处理的,实际做具体处理的是子类,在子类中实现具体功能,因此不同的子类执行将会得出不同的实现结果,但是处理流程还是按照父类定制的方式。这就是模板方法的要义所在,制定算法骨架,让子类具体实现。
UML图如下:
简单示例代码如下:
//人类基类class Person{public: virtual ~Person(){}; void eatFood();protected: Person(){} virtual void eatBreakfast() = 0; virtual void eatLunch() = 0; virtual void eatSupper() = 0;};void Person::eatFood() //一天吃饭顺序是固定的,先吃早餐,再吃午餐,最后吃晚餐,但是吃的东西确实不同人有不同的吃法{ eatBreakfast(); eatLunch(); eatSupper();}//胖子class FatPerson : public Person{protected: virtual void eatBreakfast(); virtual void eatLunch(); virtual void eatSupper();};void FatPerson::eatBreakfast(){ cout<<"早餐:不吃"<eatFood(); delete pPerson; return 0;}