模板(Template)模式的核心思想是:给业务逻辑(算法)的具体实现与抽象接口之间解耦。

它定义了一个算法的骨架,将某些步骤延迟到子类中实现。TemplateMethod 使得子类可以在不改变算法整体结构的前提下,重定义算法中的特定步骤。

模板模式通过继承来实现,而策略模式通过组合来实现,两者最终达到相似的目的。

例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()
	{


	}

};