C++ 10模板方法模式
2015-12-10 15:22
337 查看
模板方法模式,首先定义一个操作中的算法的骨架,而将一些算法细节延迟到子类中实现。模板方法使得子类不改变一个算法的结构同时又可重定义该算法的某些特定步骤。
模板方法结构图:
AbstractClass类,实现了一个模板方法,定义了算法的骨架(TemplateMethod函数中),primitiveOperation方法是虚函数,子类中要重新实现算法中一个步骤的细节。
ConcreteClass类,实现PrimitiveOperation以完成算法中与特定子类相关的步骤。
具体代码如下:
模板方法结构图:
AbstractClass类,实现了一个模板方法,定义了算法的骨架(TemplateMethod函数中),primitiveOperation方法是虚函数,子类中要重新实现算法中一个步骤的细节。
ConcreteClass类,实现PrimitiveOperation以完成算法中与特定子类相关的步骤。
具体代码如下:
#include<iostream> #include<string> using namespace std; class TestPaper { public: void TestQuestion1() { cout << "练成倚天剑、屠龙刀的玄铁可能是[ ] a.球磨铸铁 b.马口铁 c.高速合金钢 d.碳素纤维"<<endl; cout << "答案:" << Answer1() << endl; } protected: virtual string Answer1() = 0;//纯虚函数 }; //小明给出的答案 class XiaoMing :public TestPaper { string Answer1() { return "b"; } }; //小强给出的答案 class XiaoQiang :public TestPaper { string Answer1() { return "c"; } }; int main() { TestPaper *xiaoming = new XiaoMing(); xiaoming->TestQuestion1(); TestPaper *xiaoqiang = new XiaoQiang(); xiaoqiang->TestQuestion1(); return 0; }
相关文章推荐
- C++库一览
- c++获取屏幕大小
- c++管理对象之间动态的多重连接
- C++ 判断char* 是否为空
- C++多态性
- C++11 学习笔记 基于范围的for循环
- 推荐C++ Primer 第五版
- C++获取可使用的COM口列表
- Cpp--STL的组成
- Effective C++ 一个简单的 String 类的 Reference Counting 实现(C++)
- C++通过ANE发送中文字符串到AS防止乱码的处理
- Effective C++学习笔记
- 《C++标准程序库》笔记之三
- c++ vector 需要注意的地方
- C++11 并发实战阅读笔记(2)
- 【Codeforces Round 335 (Div 2) A】【水题】Magic Spheres 三种类型物品兑换比例2:1.cpp
- C++中的静态绑定和动态绑定
- c++左值和右值
- 大话设计模式_桥接模式c++实现
- C++11 新特性 之 decltype