博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模板方法模式
阅读量:5339 次
发布时间:2019-06-15

本文共 2172 字,大约阅读时间需要 7 分钟。

【1】什么是模板方法模式?

又叫模板方法模式,在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。

模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。

【2】模板方法模式代码示例:

代码示例1:

1 #include 
2 #include
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 TestPaper30 {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 TestPaper43 {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 }
View Code

代码示例2:

1 #include
2 #include
3 #include
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 AbstractClass18 {19 protected:20 virtual string GetName()21 {22 return "火影史上最帅的六代目---一鸣惊人naruto";23 }24 };25 26 class OnePice : public AbstractClass27 {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 }
View Code

 

Good  Good   Study,   Day   Day   Up.

顺序   选择   循环   总结

转载于:https://www.cnblogs.com/Braveliu/p/3942586.html

你可能感兴趣的文章
带你全面了解高级 Java 面试中需要掌握的 JVM 知识点
查看>>
sonar结合jenkins
查看>>
解决VS+QT无法生成moc文件的问题
查看>>
AngularJs练习Demo14自定义服务
查看>>
stat filename
查看>>
关于空想X
查看>>
CF1067C Knights 构造
查看>>
【算法•日更•第三十二期】教你用出windows体验的Linux
查看>>
[BZOJ2938] 病毒
查看>>
webstorm修改文件,webpack-dev-server不会自动编译刷新
查看>>
[NOIP2009] 靶形数独
查看>>
【Python网络编程】利用Python进行TCP、UDP套接字编程
查看>>
在百度和博客园发表地文章被爬索的速度比较
查看>>
Scikit-learn 库的使用
查看>>
CSS: caption-side 属性
查看>>
python 用数组实现队列
查看>>
认证和授权(Authentication和Authorization)
查看>>
Mac上安装Tomcat
查看>>
CSS3中box-sizing的理解
查看>>
传统企业-全渠道营销解决方案-1
查看>>