模板方法模式
来源:互联网 发布:计算机网络原理 知乎 编辑:程序博客网 时间:2024/05/01 00:26
模板方法模式:定义一个算法框架,将里面的操作步骤推迟到子类中去执行,这样使得子类不用改变框架,只需改变某些操作步骤方法
//test.h#ifndef _TEST_H_#define _TEST_H_#include <iostream>#include <string>using namespace std;class TestPaper{ public: TestPaper() {} virtual ~TestPaper() {} void question() { question1(); question2(); question3(); } protected: void question1() { cout << "问题1:" << endl; cout << answer1() << endl << endl; } void question2() { cout << "问题2:" << endl; cout << answer2() << endl << endl; } void question3() { cout << "问题3:" << endl; cout << answer3() << endl << endl; } virtual char answer1() { return ' '; } virtual char answer2() { return ' '; } virtual char answer3() { return ' '; }};class TestPaperA: public TestPaper{ public: void question1() { TestPaper::question1(); } void question2() { TestPaper::question2(); } void question3() { TestPaper::question3(); } char answer1() { return 'a'; } char answer2() { return 'b'; } char answer3() { return 'c'; }};class TestPaperB: public TestPaper{ public: void question1() { TestPaper::question1(); } void question2() { TestPaper::question2(); } void question3() { TestPaper::question3(); } char answer1() { return 'c'; } char answer2() { return 'd'; } char answer3() { return 'a'; }};#endif
#include <iostream>#include "test.h"using namespace std;int main(){ TestPaperA a; TestPaperB b; cout << "答卷A:" << endl; a.question(); cout << "答卷B:" << endl; b.question(); return 0;}
- 深入浅出模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法设计模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- TemplateMethod模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- ZigZag打印二叉树
- 常见的几种RuntimeException-
- 怎么截桌面的背景
- android--服务程序的例子
- mysql的重装
- 模板方法模式
- 1KB病毒
- Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '
- RuntimeException实例
- 命令提示符
- Android Animation--->TweemAnimation运用
- Java正则表达式(二)、常用正则工具类
- matlab灰度图像直方图均衡化,规定化,及彩色图像均衡化处理!
- Myeclipse修改默认启动浏览器