标签:style blog http color os io ar art div
【1】什么是模板模式?
又叫模板方法模式,在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。
模板方法使得子类可以在不改变算法结构的情冴下,重新定义算法中的某些步骤。
【2】模板模式代码示例:
代码示例1:
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 class TestPaper 6 { 7 public: 8 void question1() 9 { 10 cout << "1+1=" << answer1() << endl; 11 } 12 void question2() 13 { 14 cout << "1*1=" << answer2() << endl; 15 } 16 virtual string answer1() 17 { 18 return ""; 19 } 20 virtual string answer2() 21 { 22 return ""; 23 } 24 virtual ~TestPaper() 25 { 26 } 27 }; 28 29 class TestPaperA : public TestPaper 30 { 31 public: 32 string answer1() 33 { 34 return "2"; 35 } 36 virtual string answer2() 37 { 38 return "1"; 39 } 40 }; 41 42 class TestPaperB : public TestPaper 43 { 44 public: 45 string answer1() 46 { 47 return "3"; 48 } 49 virtual string answer2() 50 { 51 return "4"; 52 } 53 }; 54 55 56 int main() 57 { 58 cout << "A的试卷:" << endl; 59 TestPaper *s1 = new TestPaperA(); 60 s1->question1(); 61 s1->question2(); 62 delete s1; 63 64 cout << endl; 65 cout << "B的试卷:" << endl; 66 TestPaper *s2 = new TestPaperB(); 67 s2->question1(); 68 s2->question2(); 69 70 return 0; 71 }
代码示例2:
1 #include<iostream> 2 #include <vector> 3 #include <string> 4 using namespace std; 5 6 class AbstractClass 7 { 8 public: 9 void Show() 10 { 11 cout << "我是" << GetName() << endl; 12 } 13 protected: 14 virtual string GetName() = 0; 15 }; 16 17 class Naruto : public AbstractClass 18 { 19 protected: 20 virtual string GetName() 21 { 22 return "火影史上最帅的六代目---一鸣惊人naruto"; 23 } 24 }; 25 26 class OnePice : public AbstractClass 27 { 28 protected: 29 virtual string GetName() 30 { 31 return "我是无恶不做的大海贼---路飞"; 32 } 33 }; 34 35 //客户端 36 int main() 37 { 38 Naruto* man = new Naruto(); 39 man->Show(); 40 41 OnePice* man2 = new OnePice(); 42 man2->Show(); 43 44 return 0; 45 }
Good Good Study, Day Day Up.
顺序 选择 循环 总结
标签:style blog http color os io ar art div
原文地址:http://www.cnblogs.com/Braveliu/p/3942586.html