八、大话设计模式之模板方法模式

GOOD: 把不变的代码部分都转移到父类中, 将可变的代码用 virtual 留到子类重写。

迪米特法则
如果两个类不直接通信,那么这两个类就不应当发生直接的相互作用。如果一个类需要调用另一个类的某个方法的话,可以通过第三个类转发这个调用。在类的结构设计上,每一个类都应该尽量降低成员的访问权限。该法则在后面的适配器模式、解释模式等中有强烈的体现。


八、大话设计模式之模板方法模式_第1张图片

源代码:


class AbstractClass
{
public:
	void Show()
	{
		cout << "我是" << GetName() << endl;
	}
protected:
	virtual string GetName() = 0;

};

class Naruto : public AbstractClass
{
protected:
	virtual string GetName()
	{
		return "火影史上最帅的的六代目----一鸣惊人 naruto";
	}
};

class OnePice:public AbstractClass
{
protected:
	virtual string GetName()
	{
		return "我是无恶不做的大海贼­­­路飞";
	}
};

 //客户端
int main()
{
	Naruto* man = new Naruto();
	man->Show();

	OnePice* man2 = new OnePice();
	man2->Show();

	system("pause");
    return 0;
}

运行结果:

八、大话设计模式之模板方法模式_第2张图片

你可能感兴趣的:(设计模式)