- 浏览: 369984 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (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 248Ref https://blog.csdn.net/weix ... -
串口通讯相关
2018-11-02 13:44 411https://bbs.csdn.net/wap/topics ... -
[转]C++验证IP是否可以PING通
2018-10-30 17:54 1326https://www.cnblogs.com/guoyz13 ... -
C++/MFC 換皮膚
2018-10-20 11:05 477https://blog.csdn.net/u01123991 ... -
WinCE 截屏 - C++ 代碼
2018-08-31 09:45 574// this function create a bmp ... -
Android NDK搭建環境
2017-11-27 13:25 580https://www.cnblogs.com/ut2016- ... -
8583协议相关
2017-10-17 13:38 5738583相关资料,整理中... -
Java高级应用之JNI
2017-06-19 09:00 600参考link http://www.cnblogs.com/l ... -
C++实现ping功能
2017-04-18 11:21 2155基础知识 ping的过程是向目的IP发送一个type=8的I ... -
OpenSSL 编译环境搭建
2017-03-27 15:01 9061 安裝VS2008到 c:\Program Files (x ... -
最优非对称加密填充(OAEP)
2017-03-25 14:53 1582OpenSSL命令---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 1881ERROR_SUCCESS 0 (0x0) T ... -
开源Windows驱动程序框架
2016-09-17 21:35 871转自 http://code.csdn.net/news/28 ... -
c/c++代码中执行cmd命令
2016-09-14 14:50 1908转自 http://blog.csdn.net/slixinx ... -
C#使用C++标准DLL实例(包含callback)
2016-09-11 19:44 1086C++编写标准Win32DLL如下 头文件 /***** ... -
C#调用C++的DLL搜集整理的所有数据类型转换方式
2016-09-09 16:07 969转自 http://www.cnblogs.com/zeroo ... -
WinCE CPU使用率计算 测试工具
2016-09-08 16:14 991转自 http://blog.csdn.net/jan ... -
switch在C++与C#中的一些差异
2016-09-08 15:19 810参考链接 http://blog.csdn.net/weiwe ... -
C++ 鼠标模拟程序
2016-09-04 12:09 1612转自 http://blog.csdn.net/weixinh ...
相关推荐
2. **命令模式**:将请求封装为对象,使得可以使用不同的请求对客户端进行参数化,支持请求的队列处理和撤销操作。 3. **责任链模式**:在对象链中传递请求,由链上的对象决定是否处理该请求,使得系统可以在不影响...
### (行为型模式) Command 命令模式 #### 概述 在软件工程领域,设计模式被广泛地应用于解决常见的编程难题。其中,“Command”(命令)模式是一种行为型设计模式,它允许将请求封装成对象,从而使你能够用不同的...
**Chain of Responsibility(职责链)模式**是一种行为模式,它的主要动机是减少请求发送者与接收者之间的耦合。在软件开发中,有时一个请求可能由多个对象处理,但最终只有一个对象会真正处理这个请求。职责链模式...
在行为型模式中,有多种模式可以通过Python轻松实现,例如:观察者模式、命令模式、策略模式、状态模式等。通过使用Python的类和继承机制,我们可以创建出行为型模式的框架结构,并且借助Python的动态类型系统和动态...
命令模式是一种行为设计模式,它的主要目的是将请求者与接收者解耦,使得请求的发起者无需知道哪个对象会执行这个请求,同时也让系统更容易扩展。这种模式在软件工程中广泛应用,特别是在事件驱动和分布式系统中。 ...
在软件工程中,设计模式是解决常见编程问题的可重用解决方案。行为型设计模式主要关注对象...在"设计模式之行为型模式代码"这个压缩包中,你将找到这些模式的示例代码,通过学习和实践,可以更好地理解和运用这些模式。
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在iOS开发中,命令模式尤其适用于处理事件驱动的编程场景,因为...
通过分析和学习这些代码,我们可以更深入地理解策略模式和命令模式在实际项目中的应用,同时也能提升自己的编程技巧和设计思维。 总的来说,策略模式和命令模式在记事本软件中的应用展示了设计模式在提高代码质量、...
在上述内容中,提到了七种行为型设计模式,分别是责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式。 1. **责任链模式**:责任链模式的核心是建立一个对象链,每个对象都有处理请求的能力,...
这是JAVA设计模式中属于行为模式的部分,包括Template(模板模式)、Chain of Responsibility(责任链模式)、Memento(纪念品模式)、Mediator(中介模式)、Strategy(策略模式)、State 、Observer(观察者模式)、Visitor...
3. **命令模式**:命令模式将请求封装为一个对象,使得可以使用不同的请求、队列请求、或者支持撤销操作。Python中,你可以通过定义命令类和调用者类来实现此模式。 4. **迭代器模式**:迭代器模式提供了一种方法来...
首先,我们要了解行为型模式分为两大类:责任链模式、解释器模式、迭代器模式、命令模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式以及访问者模式。这些模式各有特点,解决不同的设计问题。 例如...
这里我们将深入探讨两种行为型设计模式:责任链模式(Chain of Responsibility)和命令模式(Command Pattern)。 首先,责任链模式是一种结构型设计模式,其核心思想是将多个处理者组织成一个链条,每个处理者都有...
在本实验中,我们主要探讨了四种行为型设计模式:组合命令模式、中介者模式、观察者模式和状态模式。这些模式是软件工程中极为重要的设计原则,它们可以帮助开发者更好地组织代码,提高代码的可读性、可维护性和可...
以上十种行为模式是设计模式中最为经典和实用的部分,理解并熟练应用它们,可以极大地提升代码的可读性、可维护性和可扩展性。在实际开发中,可以根据具体需求灵活选择和组合这些模式,以实现高效、优雅的软件设计。
在给定的文档中,提到了23种设计模式中的几种行为型模式,包括责任链模式、迭代器模式、中介者模式、命令模式、解释器模式、访问者模式、策略模式、模板方法模式、状态模式、观察者模式以及备忘录模式。下面将对这些...
通过阅读这些代码,你可以更清楚地理解命令模式如何在实际项目中工作。例如,可能存在多个具体命令类,每个类对应接收者的一个特定操作。调用者根据需要设置不同的命令,然后执行这些命令。 命令模式的应用场景广泛...