1. 程式人生 > >C++設計模式之模板模式

C++設計模式之模板模式

C++設計模式之模板模式


定義:定義一個操作中演算法的骨架,而將一些步驟延遲到子類中,模板方法使得子類可以不改變演算法的結構即可重定義該演算法的某些特定步驟。


其實這個設計模式是比較簡單的一個密室,換句話來說就是利用虛擬函式,把一些步驟延遲到子類中進行實現,設計模式中經常會說這麼一句話不穩定的函式寫成虛擬函式,穩定的函式寫成非虛擬函式,接下來,我們看看它的類圖


在這裡插入圖片描述


接下來,我們用模板模式實現一個函式;
1.在基類中宣告虛擬函式
2.子類繼承父類
3.在子類中實現了虛擬函式
4.子類的新增刪除都不會不影響到父類,說明父類是穩定的,帶到了設計模式的目的。

  1 #include<iostream>
  2 using namespace std;
  3 
  4 class TemplateMethod
  5 {
  6 public:
  7     void Template()
  8     {
  9         cout<<"I am templatemethod"<<endl;
 10     }
 11     virtual void Print() = 0;//宣告虛擬函式
 12 };
 13 
 14 class PrimitiveOperation1:public TemplateMethod  //繼承父類
 15 {
 16 public:
 17     void Print()
 18     {
 19         cout<<"I am PrimitiveOperation1"<<endl;
 20     }
 21 };
 22 
 23 class PrimitiveOperation2:public TemplateMethod  //繼承父類
 24 {
 25 public:
 26     void Print()  //重新編寫虛擬函式
 27     {
 28         cout<<"I am PrimitiveOperation2"<<endl;
 29     }
 30 
 31 };
 32 
 33 int main()
 34 {
 35     TemplateMethod* method1 = new PrimitiveOperation1();   //例項化
 36     method1->Print();
 37     TemplateMethod* method2 = new PrimitiveOperation2();  //例項化
 38     method2->Print();
 39     return 0;
 40 }