C++设计模式之-模板模式
模板方法模式
在GOF的《设计模式:可复用面向对象软件的基础》一书中对模板方法模式是这样说的:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的接口即可重定义改算法的某些特定步骤。
UML类图
代码实现:
// Template.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <iostream>
#include<string>
using namespace std; class AbstractClass { public: void TemplateMethod() { PrimitiveOperation1(); cout<<"TemplateMethod"<<endl; PrimitiveOperation2(); } protected: virtual void PrimitiveOperation1() { cout<<"Default Operation1"<<endl; } virtual void PrimitiveOperation2() { cout<<"Default Operation2"<<endl; } }; class ConcreteClassA : public AbstractClass { protected: virtual void PrimitiveOperation1() { cout<<"ConcreteA Operation1"<<endl; } virtual void PrimitiveOperation2() { cout<<"ConcreteA Operation2"<<endl; } }; class ConcreteClassB : public AbstractClass { protected: virtual void PrimitiveOperation1() { cout<<"ConcreteB Operation1"<<endl; } virtual void PrimitiveOperation2() { cout<<"ConcreteB Operation2"<<endl; } };
int _tmain(int argc, _TCHAR* argv[])
{ AbstractClass *pAbstractA = new ConcreteClassA; pAbstractA->TemplateMethod(); AbstractClass *pAbstractB = new ConcreteClassB; pAbstractB->TemplateMethod(); if (pAbstractA) delete pAbstractA; if (pAbstractB) delete pAbstractB; system("pause");
return ;
}
C++设计模式之-模板模式的更多相关文章
- 图解Java设计模式之模板模式
图解Java设计模式之模板模式 豆浆制作问题 模板方法模式基本介绍 模板方法模式原理类图 模板方法模式解决豆浆制作问题 模板方法模式的钩子方法 模板方法模式在Spring框架中的源码分析 模板方法模式 ...
- python设计模式之模板模式
python设计模式之模板模式 编写优秀代码的一个要素是避免冗余.在面向对象编程中,方法和函数是我们用来避免编写冗余代码的重要工具. 现实中,我们没法始终写出100%通用的代码.许多算法都有一些(但并 ...
- JAVA设计模式之模板模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述模板方法(Template Method)模式的: 模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式 ...
- 设计模式之 - 模板模式(Template Pattern)
引入:这几天在看一本讲spring源码的书<SPRING技术内幕>里面在讲加载配置文件的时候,可以有不同的加载方式,如根据文件系统目录加载配置文件(FileSystemXmlApplica ...
- 设计模式之模板模式 template
设计模式 模板模式如果有一个流程如下step1();step2();step3();step4();step5();其中step3() step5()是需要用户自己编写使用其他步骤是固定的那么可以写成 ...
- 大话设计模式之模板模式 C#
学无止境,精益求精 十年河东,十年河西,莫欺少年穷 今天一起探讨模板模式,如下: 一.概念 上一篇文章讲了大话设计模式:原型模式,原型模式主要是通过Clone()方法<深浅复制>,创建新的 ...
- 设计模式之模板模式(PHP实现)
github地址:https://github.com/ZQCard/design_pattern * 在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板. ...
- Spring中的设计模式:模板模式
导读 模板模式在是Spring底层被广泛的应用,比如事务管理器的实现,JDBC模板的实现. 文章首发于作者的微信公众号[码猿技术专栏] 今天就来谈谈「什么是模板模式」.「模板模式的优缺点」.「模板模式 ...
- 13.java设计模式之模板模式
基本需求: 制作豆浆的流程 选材--->添加配料--->浸泡--->放到豆浆机打碎 通过添加不同的配料,可以制作出不同口味的豆浆 选材.浸泡和放到豆浆机打碎这几个步骤对于制作每种口味 ...
- Java设计模式之模板模式(Template )
前言: 最近学习了Glide开源图片缓存框架,在学习到通过使用ModelLoader自定义数据源的时候,Glide巧妙的使用了Java的模板模式来对外暴露处理不同的Url数据源,今天来学习总结一下模板 ...
随机推荐
- HDU2189 来生一起走
好久没发博客了,最近遇到以下奇葩错误,不明觉厉,忍不住发一篇 /*母函数,因为要求的是素数,那么先打一个素数表,所有的因子都是素数构成 但是遇到一个奇葩事,当num初值取1,结果就出不来,运行了好久 ...
- 《阿里巴巴Java开发规约》插件使用
通过Jetbrains官方仓库安装 1. 打开 Settings >> Plugins >> Browse repositories... 2. 在搜索框输入alibaba即可 ...
- Redis学习笔记之Redis单机,伪集群,Sentinel主从复制的安装和配置
0x00 Redis简介 Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure server). Redis的键值 ...
- Kafka学习之(四)PHP操作Kafka
简单测试 环境:Centos6.4,PHP7,kafka服务器IP:192.168.9.154,PHP服务器:192.168.9.157 在192.168.9.157创建目录和文件. //生产者 &l ...
- 20145321 《Java程序设计》第2周学习总结
20145321 <Java程序设计>第2周学习总结 教材学习内容总结 一.类型.变量.运算符 1.类型(基本类型) (1)整数:short(占2字节),int(占4字节),long(占8 ...
- MysQL使用一创建库与表
数据库简介 人类在进化的过程中,创造了数字.文字.符号等来进行数据的记录,但是承受着认知能力和创造能力的提升,数据量越来越大,对于数据的记录和准确查找,成为了一个重大难题 计算机诞生后,数据开始在计算 ...
- Redis中RedisTemplate和Redisson管道的使用
当对Redis进行高频次的命令发送时,由于网络IO的原因,会耗去大量的时间.所以Redis提供了管道技术,就是将命令一次性批量的发送给Redis,从而减少IO. 一.Jedis对redis的管道进行操 ...
- Task作为返回值以及Task<TResult>作为返回值
async await return Task https://stackoverflow.com/questions/25191512/async-await-return-task Can som ...
- Implement JSON Web Tokens Authentication in ASP.NET Web API and Identity 2.1 Part 3 (by TAISEER)
http://bitoftech.net/2015/02/16/implement-oauth-json-web-tokens-authentication-in-asp-net-web-api-an ...
- win7打开ftp步骤
FTP是很方便文件传输的功能 打开ftp xftp连接 传输测试 如果连接不通的话,有可能是防火墙的问题