设计模式-行为-Template(模板)模式
给业务逻辑(算法)具体实现和抽象接口之间的解耦
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Te m p l a t e M e t h o d 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
模板模式是通过继承来实现,而策略模式是通过组合来实现 2者达到相似的目的。
例1
class AbstractClass { public: virtual void TemplateMethod() { this->Primitive2(); this->Primitive1(); } protected: virtual void Primitive1() = 0; virtual void Primitive2() = 0; }; class ConCreateClass1:public AbstractClass { public: virtual void Primitive2() { cout << __FUNCTION__ << endl; } virtual void Primitive1() { cout << __FUNCTION__ << endl; } }; int main(int argc, char *argv[]) { AbstractClass *abs = new ConCreateClass1; abs->TemplateMethod(); system("pause"); return 0; }
例2
class TowerBase { public: int _hp; virtual void initWithBase() = 0; }; class TowerUI:public TowerBase { public: Texture _texture; virtual void initWithUI() = 0; }; class TowerSun:public TowerUI { public: void init() { this->initWithBase(); this->initWithUI(); } virtual void initWithBase() { } virtual void initWithUI() { } };