Template_Method
#include <iostream> using namespace std;
#define DESTROY_POINTER(ptr) if (ptr) { delete ptr; ptr = NULL; } class TemplateMethod
{
public:
void AlgorithmA() { Step1(); Step2(); Step3(); }
void AlgorithmB() { Step3(); Step2(); Step1(); } protected:
virtual void Step1()=;
virtual void Step2()=;
virtual void Step3()=;
}; class ConcreteTemplateA : public TemplateMethod
{
public:
ConcreteTemplateA() {}
~ConcreteTemplateA() {} protected:
void Step1() { cout<<"ConcreteTemplateA::Step1"<<endl; }
void Step2() { cout<<"ConcreteTemplateA::Step2"<<endl; }
void Step3() { cout<<"ConcreteTemplateA::Step3"<<endl; }
}; class ConcreteTemplateB : public TemplateMethod
{
public:
ConcreteTemplateB() {}
~ConcreteTemplateB() {} protected:
void Step1() { cout<<"ConcreteTemplateB::Step1"<<endl; }
void Step2() { cout<<"ConcreteTemplateB::Step2"<<endl; }
void Step3() { cout<<"ConcreteTemplateB::Step3"<<endl; }
}; int main(int argc, char *argv[])
{
TemplateMethod* pTemplate = NULL; pTemplate = new ConcreteTemplateA;
pTemplate->AlgorithmA();
DESTROY_POINTER(pTemplate); pTemplate = new ConcreteTemplateB;
pTemplate->AlgorithmB();
DESTROY_POINTER(pTemplate); return ;
}
Template_Method的更多相关文章
- 【行为型】TemplateMethod模式
模板方法意图是为算法定义好骨架结构,并且其中的某些步骤延迟到子类实现.该模式算是较为简单的一种设计模式.在实际中,应用也较为频繁.模式的类关系图参考如下: 模式的编码结构参考如下: namespace ...
- 设计模式 - 模板方法模式(template method pattern) JFrame 具体解释
模板方法模式(template method pattern) JFrame 具体解释 本文地址: http://blog.csdn.net/caroline_wendy 參考模板方法模式(templ ...
- [Python设计模式] 第10章 怎么出试卷?——模版方法模式
github地址:https://github.com/cheesezh/python_design_patterns 题目 小时候数学老师的随堂测验,都是老师在黑板上写题目,学生在下边抄,然后再做题 ...
- 设计模式 - 模板方法模式(template method pattern) 排序(sort) 具体解释
模板方法模式(template method pattern) 排序(sort) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy 參考模板方法模式(tem ...
- 设计模式 - 模板方法模式(template method pattern) 具体解释
模板方法模式(template method pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 模板方法模式(template metho ...
- Template Method模式和Strategy模式有何异同
Template Method模式和Strategy模式有何异同 博客分类: 设计模式 Java Template Method模式很容易理解,就是由基类提供一个模板,将各子类中不变的行为提取到基类 ...
- PHP 23种设计模式
学习PHP,对设计模式永远是逃不掉的:今天把php23种设计模式及其demo好好整理如下: 记录PHP关于23种设计模式的简单Demo. Demo地址:https://segmentfault.com ...
随机推荐
- mysql处理上百万条的数据库如何优化语句来提高处理查询效率
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- MYSQL C API : mysql_real_connect()
MYSQL * mysql_real_connect( MYSQL *mysql, const char *host, const char *user, const char *passwd, co ...
- [ActionScript 3.0] Away3D 非skybox的全景例子
package { import away3d.containers.View3D; import away3d.controllers.HoverController; import away3d. ...
- setinterval在jQuery里面是怎么使用的。
自动播放?不太明白你的意思啊,自动播放什么呢? 首先jquery选择器获取需要自动播放的元素,然后执行播放动作 例如:window.onload=function(){$("#player& ...
- apache下php无法解析直接显示源代码解
在http.conf中加入php的设置 #php5_start phpIniDir "d:/Program Files/php" LoadModule php5_module &q ...
- IRasterClassifyColorRampRenderer 使用时的一些奇怪的地方 (转)
1.IRasterClassifyColorRampRenderer 的Break设置方法 IRasterClassifyColorRampRenderer这个接口是ArcEngine里对单波段栅格影 ...
- windows查看端口占用
查看占用端口的进程ID netstat -aon | findstr "9000" 再用进程ID查看进程 tasklist | findstr "6048"
- PinYinCls
using System;using System.Data;using System.Configuration;using System.Linq;using System.Web;using S ...
- SSH连接问题
新安装的ubuntu14.04无法使用root用户ssh连接,显示ssh root permission denied 解决方法: /etc/ssh/sshd_confg: PermitRootLog ...
- windows openssl
1.安装Perl 下载 ActivePerl-5.20.2.2001-MSWin32-x64-298913,安装到 C:\Perl64\eg 运行 => cmd => cd C:\Perl ...