模板模式
设计模式
Template Method模式也叫模板模式,是行为型模式之一,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。
Template Method模式一般应用在具有以下条件的应用中:
- 具有统一的操作步骤或操作过程
- 具有不同的操作细节
- 存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同
总结
在抽象类中统一操作步骤,并规定好接口;让子类实现接口。这样可以把各个具体的子类和操作步骤解耦合。

代码
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 
 | #include <iostream>
 using namespace std;
 
 class MakeCar
 {
 public:
 virtual void MakeHead() = 0;
 virtual void MakeBody() = 0;
 virtual void MakeTail() = 0;
 
 void Make()
 {
 
 MakeTail();
 MakeBody();
 MakeHead();
 }
 protected:
 private:
 };
 
 class Jeep : public MakeCar
 {
 public:
 virtual void MakeHead()
 {
 cout << "JeepHead" << endl;
 }
 virtual void MakeBody()
 {
 cout << "JeepBody" << endl;
 }
 virtual void MakeTail()
 {
 cout << "JeepTail" << endl;
 }
 };
 
 class BWM : public MakeCar
 {
 public:
 virtual void MakeHead()
 {
 cout << "BWMHead" << endl;
 }
 virtual void MakeBody()
 {
 cout << "BWMBody" << endl;
 }
 virtual void MakeTail()
 {
 cout << "BWMTail" << endl;
 }
 };
 
 class Bus : public MakeCar
 {
 public:
 virtual void MakeHead()
 {
 cout << "BusHead" << endl;
 }
 virtual void MakeBody()
 {
 cout << "BusBody" << endl;
 }
 virtual void MakeTail()
 {
 cout << "BusTail" << endl;
 }
 };
 
 int main()
 {
 MakeCar* car = new Bus;
 car->Make();
 delete car;
 
 cout << endl;
 
 MakeCar* car2 = new Jeep;
 car2->Make();
 delete car2;
 
 cout << "Hello world!" << endl;
 return 0;
 }
 
 | 
输出:
| 12
 3
 4
 5
 6
 7
 8
 
 | BusTailBusBody
 BusHead
 
 JeepTail
 JeepBody
 JeepHead
 Hello world!
 
 |