- 浏览: 357001 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (335)
- C++ (190)
- 设计模式 (43)
- 数据库技术 (5)
- 网络编程 (11)
- 自动化测试 (6)
- Linux (13)
- OpenSSL (10)
- MS Crypt API (5)
- SCM (2)
- English (4)
- Android (10)
- EMV规范 (1)
- Saturn Platform (0)
- C (10)
- SQL (2)
- ASP.NET (3)
- 英语口语学习 (3)
- 调试工具 (21)
- 编译技术 (5)
- UML (1)
- 项目管理 (5)
- 敏捷开发 (2)
- Http Server (6)
- 代码审查、代码分析 (5)
- 面试基础 (10)
- 重点知识 (16)
- STL (6)
- Efficient C++资料 (8)
- 数据结构和算法 (7)
- 读书笔记 (0)
- 开源项目 (4)
- 多线程 (2)
- Console App (6)
- 个人开源项目 (4)
- IBM DevelopWorks (4)
- Java (16)
- 内存泄漏相关调试和检测 (13)
- 软件测试相关技术 (2)
- C# (11)
- Apple Related (1)
- 软件测试和管理 (2)
- EMV (1)
- Python (1)
- Node.js (6)
- JavaScript (5)
- VUE (1)
- Frontend (1)
- Backend (4)
- RESTful API (3)
- Firebase (3)
最新评论
-
u013189503:
来个密码吧
[C++][Logging] 项目中写日志模块的实现 -
wyf_vc:
来个密码啊!!
[C++][Logging] 项目中写日志模块的实现
头文件
//TemplateMethodPattern.h #ifndef TEMPLATE_METHOD_PATTERN_H #define TEMPLATE_METHOD_PATTERN_H #include <Windows.h> #include <iostream> using namespace std; namespace TemplateMethodPattern { ////////////////////////////////////////////////////////////////////////// class AbstractClass { public: AbstractClass(); virtual ~AbstractClass(); void TemplateMethod(); protected: virtual void PrimitiveOperation1() = 0; virtual void PrimitiveOperation2() = 0; }; ////////////////////////////////////////////////////////////////////////// class ConcreteClassA : public AbstractClass { public: ConcreteClassA(); virtual ~ConcreteClassA(); protected: virtual void PrimitiveOperation1(); virtual void PrimitiveOperation2(); }; ////////////////////////////////////////////////////////////////////////// class ConcreteClassB : public AbstractClass { public: ConcreteClassB(); virtual ~ConcreteClassB(); protected: virtual void PrimitiveOperation1(); virtual void PrimitiveOperation2(); }; ////////////////////////////////////////////////////////////////////////// void TemplateMethodPattern_Test(); } #endif
实现
#include "TemplateMethodPattern.h" namespace TemplateMethodPattern { ////////////////////////////////////////////////////////////////////////// AbstractClass::AbstractClass() {} AbstractClass::~AbstractClass() {} void AbstractClass::TemplateMethod() { PrimitiveOperation1(); cout<<"TemplateMethod"<<endl; PrimitiveOperation2(); } void AbstractClass::PrimitiveOperation1() { cout<<"Default Operation1"<<endl; } void AbstractClass::PrimitiveOperation2() { cout<<"Default Operation2"<<endl; } ////////////////////////////////////////////////////////////////////////// ConcreteClassA::ConcreteClassA() {} ConcreteClassA::~ConcreteClassA() {} void ConcreteClassA::PrimitiveOperation1() { cout<<"ConcreteA Operation1"<<endl; } void ConcreteClassA::PrimitiveOperation2() { cout<<"ConcreteA Operation2"<<endl; } ////////////////////////////////////////////////////////////////////////// ConcreteClassB::ConcreteClassB(){} ConcreteClassB::~ConcreteClassB(){} void ConcreteClassB::PrimitiveOperation1() { cout<<"ConcreteB Operation1"<<endl; } void ConcreteClassB::PrimitiveOperation2() { cout<<"ConcreteB Operation2"<<endl; } ////////////////////////////////////////////////////////////////////////// void TemplateMethodPattern_Test() { AbstractClass *pAbstractA = new ConcreteClassA; pAbstractA->TemplateMethod(); AbstractClass *pAbstractB = new ConcreteClassB; pAbstractB->TemplateMethod(); if (pAbstractA) delete pAbstractA; if (pAbstractB) delete pAbstractB; } }
客户端
#include "TemplateMethodPattern.h" #include <iostream> using namespace std; using namespace TemplateMethodPattern; void main() { TemplateMethodPattern_Test(); }
运行结果
用例模型
设计类图
顺序图
- Diagram.zip (791.3 KB)
- 下载次数: 0
- Diagram-raw.zip (294.3 KB)
- 下载次数: 0
- TemplateMethodPattern.zip (978 Bytes)
- 下载次数: 0
发表评论
-
FreeRTOS
2022-03-05 16:31 213Ref https://blog.csdn.net/weix ... -
串口通讯相关
2018-11-02 13:44 371https://bbs.csdn.net/wap/topics ... -
[转]C++验证IP是否可以PING通
2018-10-30 17:54 1246https://www.cnblogs.com/guoyz13 ... -
C++/MFC 換皮膚
2018-10-20 11:05 433https://blog.csdn.net/u01123991 ... -
WinCE 截屏 - C++ 代碼
2018-08-31 09:45 536// this function create a bmp ... -
Android NDK搭建環境
2017-11-27 13:25 536https://www.cnblogs.com/ut2016- ... -
8583协议相关
2017-10-17 13:38 5288583相关资料,整理中... -
Java高级应用之JNI
2017-06-19 09:00 559参考link http://www.cnblogs.com/l ... -
C++实现ping功能
2017-04-18 11:21 2051基础知识 ping的过程是向目的IP发送一个type=8的I ... -
OpenSSL 编译环境搭建
2017-03-27 15:01 8661 安裝VS2008到 c:\Program Files (x ... -
最优非对称加密填充(OAEP)
2017-03-25 14:53 1528OpenSSL命令---rsautl http://blog. ... -
[Platform Builder] 设置SVM OS build Env
2016-11-10 11:39 01 copy one OSDesign Project to ... -
[Windows] System Error Codes(GetLastError )0-----5999
2016-10-26 13:28 1839ERROR_SUCCESS 0 (0x0) T ... -
开源Windows驱动程序框架
2016-09-17 21:35 825转自 http://code.csdn.net/news/28 ... -
c/c++代码中执行cmd命令
2016-09-14 14:50 1824转自 http://blog.csdn.net/slixinx ... -
C#使用C++标准DLL实例(包含callback)
2016-09-11 19:44 1010C++编写标准Win32DLL如下 头文件 /***** ... -
C#调用C++的DLL搜集整理的所有数据类型转换方式
2016-09-09 16:07 934转自 http://www.cnblogs.com/zeroo ... -
WinCE CPU使用率计算 测试工具
2016-09-08 16:14 942转自 http://blog.csdn.net/jan ... -
switch在C++与C#中的一些差异
2016-09-08 15:19 767参考链接 http://blog.csdn.net/weiwe ... -
C++ 鼠标模拟程序
2016-09-04 12:09 1547转自 http://blog.csdn.net/weixinh ...
相关推荐
这是JAVA设计模式中属于行为模式的部分,包括Template(模板模式)、Chain of Responsibility(责任链模式)、Memento(纪念品模式)、Mediator(中介模式)、Strategy(策略模式)、State 、Observer(观察者模式)、Visitor...
设计模式11-行为模式-责任链、命令模式 设计模式12-解释器模式 设计模式13-迭代器模式 设计模式14-中介者模式、备忘录模式 设计模式15-观察者模式、状态模式 设计模式16-策略模式、模板方法、访问者 此PPT实例便于...
行为型模式则关注对象的交互和职责分配,包括观察者模式、策略模式、模板方法模式等。 使用设计模式的好处包括: 提高软件的可维护性和可复用性,因为设计模式提供了通用的设计语言和最佳实践。 使代码更易于理解和...
5.10 TEMPLATE METHOD(模板方法) —类行为型模式 214 5.11 VISITOR(访问者)—对象行为型 模式 218 5.12 行为模式的讨论 228 5.12 1 封装变化 228 5.12.2 对象作为参数 228 5.12.3 通信应该被封装还是被分布 229 ...
5.10 template method(模板方法) —类行为型模式 214 5.11 visitor(访问者)—对象行为型 模式 218 5.12 行为模式的讨论 228 5.12 1 封装变化 228 5.12.2 对象作为参数 228 5.12.3 通信应该被封装还是被...
第6章阐释行为模式(职责链、命令、解释器、迭代器、中介者、备忘录、观察者、状态、策略、模板方法、访问者模式);第7章针对所有设计模式向初学者提供一些提示;第8章包括常见的面试问题及实际示例;第9章涵盖Java...
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。 二、设计...
1.3.5 基本模式、行为模式和结构模式 1.4 其他有名的设计实践 1.4.1 测试驱动设计 1.4.2 领域驱动设计 1.4.3 行为驱动设计 1.5 小结 第2章 剖析模式的模式 2.1 如何阅读设计模式 2.1.1 GoF模式模板 2.1.2...
书中应用GoF的经典设计模式,介绍了如何在代码中应用创建型模式、结构型模式和行为模式,如何设计模式以巩固应用程序,并通过设计模式实例介绍MVC在CocoaTouch框架中的工作方式。 《Objective-C编程之道:iOS设计...
然后分别讲述了创建型模式、结构型模式和行为型模式。每一类设计模式又包括若干种具体模式,共有23种。在介绍每种模式时,给出了一个或多个应用该模式的示例,以便于理解,且这些示例都是能完全运行的程序,包含在随...
模板方法是一种代码复用的基本技术,在类库中尤为重要,因为他们提取了类库中的公共行为。模板方法导致一种反向的控制结构,这种结构就是传说中的“好莱坞法则”,即“别找找我们,我们找你”,这指的是父类调用一个...
设计模式3 1.1 创立型模式4 1.1.1 工厂方法4 1.1.2 抽象工厂6 1.1.3 建造...行为型模式37 1.3.1 责任链模式37 1.3.2 命令模式40 1.3.3 解释器模式43 1.3.4 迭代器模式45 1.3.5 中介者模式49 1.3.6 备忘录模式52 1.3.7 ...
创建型模式5种单例模式,工厂方法模式,抽象工厂模式,建造者模式,原型模式结构型模式7种适配器模式,装饰器模式,代理模式,外观模式,替代模式,组合模式,享元模式行为型模式11种策略模式,模板方法模式,观察者...
将创建与使用代码解耦结构型模式作用:将不同的功能代码解耦桥接模式装饰器模式适配器模式外观模式组合模式享元模式行为型模式(更新中...)作用:将不同的行为代码解耦观察者模式模板方法模式策略模式职责链模式...
行为类型模式,共十种:策略模式,模板方法模式,观察者模式,迭代子模式,责任链模式,命令模式,注释模式,状态模式,访问者模式,中介者模式,解释器模式。 设计模式的六大原则 开闭原则(Open Close Principle)...
模板方法模式 解释器模式 写在前面: UML图解 继承和实现是比较容易理解的两种类关系。在架构设计中,要注意组合、聚合和 依赖这三者的区别。 组合在 语中的含义是把若干个独立部分组成整体 各个部分都有其 立的使用...
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 设计模式之UML 类图以及类间关系(泛化 、实现、依赖...