模板方法模式

【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 }
View Code
复制代码

代码示例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 }
View Code
复制代码

 

Good  Good   Study,   Day   Day   Up.

顺序   选择   循环   总结

posted @   kaizenly  阅读(338)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
历史上的今天:
2013-08-28 RAII惯用法详解
2013-08-28 [2] 智能指针
打赏

喜欢请打赏

扫描二维码打赏

微信打赏

点击右上角即可分享
微信分享提示