#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的更多相关文章

  1. 【行为型】TemplateMethod模式

    模板方法意图是为算法定义好骨架结构,并且其中的某些步骤延迟到子类实现.该模式算是较为简单的一种设计模式.在实际中,应用也较为频繁.模式的类关系图参考如下: 模式的编码结构参考如下: namespace ...

  2. 设计模式 - 模板方法模式(template method pattern) JFrame 具体解释

    模板方法模式(template method pattern) JFrame 具体解释 本文地址: http://blog.csdn.net/caroline_wendy 參考模板方法模式(templ ...

  3. [Python设计模式] 第10章 怎么出试卷?——模版方法模式

    github地址:https://github.com/cheesezh/python_design_patterns 题目 小时候数学老师的随堂测验,都是老师在黑板上写题目,学生在下边抄,然后再做题 ...

  4. 设计模式 - 模板方法模式(template method pattern) 排序(sort) 具体解释

    模板方法模式(template method pattern) 排序(sort) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy 參考模板方法模式(tem ...

  5. 设计模式 - 模板方法模式(template method pattern) 具体解释

    模板方法模式(template method pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 模板方法模式(template metho ...

  6. Template Method模式和Strategy模式有何异同

    Template Method模式和Strategy模式有何异同 博客分类: 设计模式 Java  Template Method模式很容易理解,就是由基类提供一个模板,将各子类中不变的行为提取到基类 ...

  7. PHP 23种设计模式

    学习PHP,对设计模式永远是逃不掉的:今天把php23种设计模式及其demo好好整理如下: 记录PHP关于23种设计模式的简单Demo. Demo地址:https://segmentfault.com ...

随机推荐

  1. 拥抱 Android Studio 之四:Maven 仓库使用与私有仓库搭建

    使用.创造和分享 笔者曾经不思量力的思考过『是什么推动了互联网技术的快速发展?』这种伟大的命题.结论是,除了摩尔定律之外,技术经验的快速积累和广泛分享,也是重要的原因. 有人戏称,『写 Java,首先 ...

  2. 线程中的wait() 与 锁的关系

    我们先看一段代码: /** * 计算输出其他线程锁计算的数据 * */ public class ThreadA { public static void main(String[] args) th ...

  3. C++学习49 对二进制文件的读写操作

    二进制文件不是以ASCII代码存放数据的,它将内存中数据存储形式不加转换地传送到磁盘文件,因此它又称为内存数据的映像文件.因为文件中的信息不是字符数据,而是字节中的二进制形式的信息,因此它又称为字节文 ...

  4. centos6.5网络配置问题:ping不通

    遇到的问题:win7网卡ping不通 win7中的VMnet8信息 centos6.5设置: /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ...

  5. github里的gist是什么意思

    在有关github的客户端中经常遇到gist这个词,如Gists->My Gists,Public Gists. 字典里解释gist为(发言.谈话或文章的)主旨,要点.百度百科的解释太恶心,我不 ...

  6. xml是什么?

    xml Extensible Markup Language 可扩展标记语言 它被设计用来传输和存储数据. 它的内容都是由标签组成,非常有规律.

  7. 你很牛B,面试却没过,为什么?

    点击标题下「飞测」可快速关注 坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注.转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是我们期 ...

  8. Flash图表控件FusionCharts如何在图表中显示标识和图片

    在FusionCharts的图表中显示外部商标 使用FusionCharts之后,用户可以在运行时加载需要在图表中显示的外部标识/图片/图像.这个标识可以GIF / JPEG / PNG或SWF文件格 ...

  9. C#如何在事件中获得GridView里面TextBox的值

    GridView设置如下: <asp:GridView ID="GridViewlb" runat="server" AutoGenerateColumn ...

  10. 常用上传shell脚本

    #!/bin/bash FTP_IP=127.0.0.1 FTP_USER="aaa" FTP_PSW="bbb" GAME_NAME="ccc&qu ...