模板模式 template

来源:互联网 发布:fast paxos java示例 编辑:程序博客网 时间:2024/06/05 07:44

1、概念:

a)   Template Method模式也叫模板方法模式,是行为模式之一,它把具有特定步骤的某些必要对的处理委让给抽象方法,通过子类继承对抽象方法的不同实现整个算法的行为。

2、应用场景:

(a)、Template Method 模式一般应用在具有以下条件的应用中:

(1)、具有统一的操作步骤或者操作过程

(2)、具有不同的操作细节

(3)、存在具有多个就有同样操作步骤的场景,但某些具体的操作细节却各不尽相同。

(b)、总结:

在抽象类中统一操作步骤,并规定好接口,让子类实现接口。这样可以把各个具体的子类和操作步骤直接耦合。

 

3、角色和职责:


                         AbstractClass:

                                                    抽象类的父类

                        ConcreteClass:

                                                   具体实现的子类

                        TemplateMethod()

                                                   模板方法

                         Method1()与Method()2

                                                   具体方法步骤

4、示例代码:


#include<iostream>using namespace std;class MakeCar{public:virtual void makeBody() = 0;virtual void makeTail() = 0;virtual void makeHead() = 0;virtual void make()     // 模板函数{makeTail();makeBody();makeHead();}};class Jeep:public MakeCar{virtual void makeBody(){cout << "Jeep Body" << endl;}virtual void makeTail(){cout << "Jeep Tail" << endl;}virtual void makeHead(){cout << "Jeep Head" << endl;}};class BMW :public MakeCar{virtual void makeBody(){cout << "BMW Body" << endl;}virtual void makeTail(){cout << "BMW Tail" << endl;}virtual void makeHead(){cout << "BMW Head" << endl;}};int main(void){MakeCar *car1 = new Jeep;car1->make();delete  car1;car1 = NULL;MakeCar *car2 = new BMW;car2->make();delete  car2;car2 = NULL;return 0;}



原创粉丝点击