- 浏览: 357739 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (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] 项目中写日志模块的实现
头文件
//CommandPattern.h #ifndef COMMAND_PATTERN_H #define COMMAND_PATTERN_H #include <Windows.h> #include <string> using namespace std; namespace CommandPattern { class Receiver { public: void Action(); }; class AbstructCommand { public: virtual ~AbstructCommand(); virtual void Execute() = 0; }; class ConcretetCommand : public AbstructCommand { public: ConcretetCommand(Receiver* pReciver); virtual ~ConcretetCommand(); virtual void Execute(); private: Receiver* m_pReciver; }; class Invoker { public: Invoker(AbstructCommand* pCommand); void Order(); private: AbstructCommand* m_pCommand; }; ////////////////////////////////////////////////////////////////////////// void CommandPattern_Test(); } #endif
实现
#include "CommandPattern.h" #include <iostream> using namespace std; #define SAFE_DELETE(p) if (p) { delete p; p = NULL; } namespace CommandPattern { ////////////////////////////////////////////////////////////////////////// void Receiver::Action() { cout << "Receiver->Action" << endl; } ////////////////////////////////////////////////////////////////////////// AbstructCommand::~AbstructCommand() { } ////////////////////////////////////////////////////////////////////////// ConcretetCommand::ConcretetCommand(Receiver* pReciver) : m_pReciver(NULL) { if (m_pReciver==NULL && pReciver!=NULL) { m_pReciver = pReciver; } } ConcretetCommand::~ConcretetCommand() { } void ConcretetCommand::Execute() { if (m_pReciver != NULL) { cout << "ConcretetCommand->Execute" << endl; m_pReciver->Action(); } } ////////////////////////////////////////////////////////////////////////// Invoker::Invoker(AbstructCommand* pCommand) : m_pCommand(NULL) { if (m_pCommand==NULL && pCommand!=NULL) { m_pCommand = pCommand; } } void Invoker::Order() { cout << "Invoker->Order" << endl; m_pCommand->Execute(); } void CommandPattern_Test() { Receiver* pReceiver = new Receiver(); ConcretetCommand* pConcreteCmd = new ConcretetCommand(pReceiver); Invoker* pInvoker= new Invoker(pConcreteCmd); pInvoker->Order(); SAFE_DELETE(pReceiver); SAFE_DELETE(pConcreteCmd); SAFE_DELETE(pInvoker); } }
客户端
#include "CommandPattern.h" #include <iostream> using namespace std; using namespace CommandPattern; void main() { CommandPattern_Test(); }
运行结果
Invoker->Order ConcretetCommand->Execute Receiver->Action
- Diagram.zip (953.3 KB)
- 下载次数: 0
- CommandPattern.zip (1.1 KB)
- 下载次数: 0
发表评论
-
FreeRTOS
2022-03-05 16:31 216Ref https://blog.csdn.net/weix ... -
串口通讯相关
2018-11-02 13:44 373https://bbs.csdn.net/wap/topics ... -
[转]C++验证IP是否可以PING通
2018-10-30 17:54 1257https://www.cnblogs.com/guoyz13 ... -
C++/MFC 換皮膚
2018-10-20 11:05 436https://blog.csdn.net/u01123991 ... -
WinCE 截屏 - C++ 代碼
2018-08-31 09:45 537// this function create a bmp ... -
Android NDK搭建環境
2017-11-27 13:25 542https://www.cnblogs.com/ut2016- ... -
8583协议相关
2017-10-17 13:38 5328583相关资料,整理中... -
Java高级应用之JNI
2017-06-19 09:00 559参考link http://www.cnblogs.com/l ... -
C++实现ping功能
2017-04-18 11:21 2060基础知识 ping的过程是向目的IP发送一个type=8的I ... -
OpenSSL 编译环境搭建
2017-03-27 15:01 8681 安裝VS2008到 c:\Program Files (x ... -
最优非对称加密填充(OAEP)
2017-03-25 14:53 1530OpenSSL命令---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 1840ERROR_SUCCESS 0 (0x0) T ... -
开源Windows驱动程序框架
2016-09-17 21:35 827转自 http://code.csdn.net/news/28 ... -
c/c++代码中执行cmd命令
2016-09-14 14:50 1829转自 http://blog.csdn.net/slixinx ... -
C#使用C++标准DLL实例(包含callback)
2016-09-11 19:44 1013C++编写标准Win32DLL如下 头文件 /***** ... -
C#调用C++的DLL搜集整理的所有数据类型转换方式
2016-09-09 16:07 938转自 http://www.cnblogs.com/zeroo ... -
WinCE CPU使用率计算 测试工具
2016-09-08 16:14 946转自 http://blog.csdn.net/jan ... -
switch在C++与C#中的一些差异
2016-09-08 15:19 769参考链接 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.12 行为模式的讨论 228 5.12 1 封装变化 228 5.12.2 对象作为参数 228 5.12.3 通信应该被封装还是被分布 229 5.12.4 对发送者和接收者解耦 229 5.12.5 总结 231 第6章 结论 232 6.1 设计模式将带来什么 232 6.2 ...
5.12 行为模式的讨论 228 5.12 1 封装变化 228 5.12.2 对象作为参数 228 5.12.3 通信应该被封装还是被分布 229 5.12.4 对发送者和接收者解耦 229 5.12.5 总结 231 第6章 结论 232 6.1 设计模式将带来什么 232...
行为型模式关心类或对象怎样交互和怎样分配职责,包括模板方法模式、命令模式、责任链模式等。 在实战应用中,需要选择合适的设计模式来解决问题。学习设计模式的方法包括积累案例、大量背类图、多思考、多梳理、...
行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式) 2) 学习目标:通过学习,学员...
第6章阐释行为模式(职责链、命令、解释器、迭代器、中介者、备忘录、观察者、状态、策略、模板方法、访问者模式);第7章针对所有设计模式向初学者提供一些提示;第8章包括常见的面试问题及实际示例;第9章涵盖Java...
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。 二、设计...
命令模式的理解,关键有2点: 1. 使用接口。通常命令模式的接口中只有一个方法。 实现类的方法有不同的功能,覆盖接口中的方法。在面向对象编程中,大量使用if…else…,或者switch…case…这样的条件选择语句是...
vi 编辑器是一个功能强大的编辑器。学习 vi 要从其基本工作模式开始学起。了解这些工作模式对用户理解 vi 编辑...vi 编辑器有 3 种基本工作模式,分别是命令模式、文本输入模式和末行模式。下面详 细介绍这 3 种模式。
书中应用GoF的经典设计模式,介绍了如何在代码中应用创建型模式、结构型模式和行为模式,如何设计模式以巩固应用程序,并通过设计模式实例介绍MVC在CocoaTouch框架中的工作方式。 《Objective-C编程之道:iOS设计...
继承子模式,责任链模式,命令模式,注释模式,状态模式,访问者模式,中介者模式,解释器模式GitHub托管请读者点击明星进行关注并支持!在线阅读目录关注我对于一个开发者而言,能够胜任系统中任意一个模块的开发是...
将不同的功能代码解耦桥接模式装饰器模式适配器模式外观模式组合模式享元模式行为型模式(更新中...)作用:将不同的行为代码解耦观察者模式模板方法模式策略模式职责链模式状态模式迭代器模式访问者模式备忘录模式...
设计模式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 ...
行为类型模式,共十种:策略模式,模板方法模式,观察者模式,迭代子模式,责任链模式,命令模式,注释模式,状态模式,访问者模式,中介者模式,解释器模式。 设计模式的六大原则 开闭原则(Open Close Principle)...
命令模式 职责链模式 状态模式 观察者模式 中介者模式 迭代器模式 访问者模式 备忘录模式 模板方法模式 解释器模式 写在前面: UML图解 继承和实现是比较容易理解的两种类关系。在架构设计中,要注意组合、聚合和 ...
命令模式(Command) 3.3 解释器模式(Interpreter) 3.4 迭代器模式(Iterator) 3.5 中介者模式(Mediator) 3.6 备忘录模式(Memento) 3.7 观察者模式(Observer) 3.8 状态模式(State) 3.9 策略模式(Stra