模板方法模式,定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。
abstractclass實現了乙個模板方法,定義了演算法的骨架,具體子類將重定義primitiveoperation以實現乙個演算法的步驟。
concreteclass實現primitiveoperation以完成演算法中與特定子類相關的步驟。每乙個abstractclass可以有多個concreteclass與之對應。
參照大話設計模式上,用c++對其進行重新實現,**如下:
//抽象父類
#ifndef __test_*****_h__
#define __test_*****_h__
#include "stdio.h"
class test*****
virtual ~test*****() {}
void testquestion1()//d
void testquestion2()//a
void testquestion3()//a
virtual
char* answer1() = 0;
virtual
char* answer2() = 0;
virtual
char* answer3() = 0;
};#endif // !__test_*****_h__
#ifndef __test_*****a_h__
#define __test_*****a_h__
#include "test*****.h"
class test*****a : public test*****
virtual
char* answer2()
virtual
char* answer3()
};#endif // !__test_*****a_h__
#ifndef __test_*****b_h__
#define __test_*****b_h__
#include "test*****.h"
class test*****b : public test*****
virtual
char* answer2()
virtual
char* answer3()
};#endif // !__test_*****b_h__
//客戶端**
#include "windows.h"
#include "tchar.h"
#include "test*****a.h"
#include "test*****b.h"
int _tmain(int argc, tchar* argv)
printf("\n\n");
printf("mrs yu的試卷:\n");
test***** *studentb = new test*****b();
studentb->testquestion1();
studentb->testquestion2();
studentb->testquestion3();
if (studentb)
}
執行結果如下:
程式設計思想 Design Pattern 設計模式
1.構造器模式 constructor es5 function student name,gender,score student.prototype.sumscore function 使用原型繫結事件 var lidan newstudent 李誕 男 65 consle.log lidan....
DesignPattern系列 09設計模式概述
設計模式是程式設計師在面對同類軟體工程設計問題所總結出來的有用的經驗,模式不是 而是某類問題的通用解決方案,設計模 design pattern 代表了最佳的實踐。這些解決方案是眾多軟體開發人員經過相當長的一段時間的試驗和錯誤總結出來的。設計模式的本質提高 軟體的維護性,通用性和擴充套件性,並降低軟...
Design Pattern之策略模式
策略模式 strategy 它定義了演算法家族,分別封裝起來,讓它們之間可以互相替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。策略模式就是用來封裝演算法的,實踐中,我們發現可以用它來封裝幾乎任何型別的規則,只要在分析過程中聽到需要在不同時間應用不同的業務規則,就可以考慮使用策略模式處理這種...