设计模式_命令模式
来源:互联网 发布:手机移动协同软件 编辑:程序博客网 时间:2024/05/16 18:08
命令模式:
执行结果:
将一个请求封装为一个对象(即我们创建的Command对象),从而使你可用不同的请求对客户进行参数化; 对请求排队或记录请求日志,以及支持可撤销的操作。
解决的问题:
在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。
类图:
实例:
请求计算机画出不同的图形.
将计算机当作命令的接收者,将画图形的请求封装成命令.
发出不同的命令即可让计算机画出不同的图形.
完整可执行的代码:
#ifndef _COMMAND_H_#define _COMMAND_H_#include<iostream>using namespace std;//命令接收者class Computer{public: void drawCircle() { cout << "draw Circle" << endl; } void drawRectangle() { cout << "draw Rectangle" << endl; }};//抽象的命令类class XCommand{public: XCommand( Computer* cp ):computer(cp) {} virtual void execute() = 0;protected: Computer * computer;};//画圆形的命令class DrawCircleCommand : public XCommand{public: DrawCircleCommand( Computer* cp ):XCommand(cp) {} void execute() override { computer->drawCircle(); }};//画矩形的命令class DrawRectangleCommand: public XCommand{public: DrawRectangleCommand(Computer* cp ):XCommand(cp) {} void execute() override { computer->drawRectangle(); }};#endifint main(){ Computer* cp = new Computer(); DrawCircleCommand * circleCMD = new DrawCircleCommand(cp); circleCMD->execute(); DrawRectangleCommand * rectangleCMD = new DrawRectangleCommand(cp); rectangleCMD->execute(); return 0; }
执行结果:
阅读全文
1 0
- 设计模式_命令模式
- 设计模式_命令模式
- 设计模式_命令模式
- 设计模式_命令模式
- java设计模式_命令模式
- java设计模式_命令模式
- 大话设计模式_命令模式
- java设计模式_命令模式
- 安卓设计模式_命令模式
- java设计模式15_命令模式
- php设计模式_命令模式
- 设计模式_命令模式(21)
- javascript设计模式_第二部分_命令模式
- Java设计模式_(行为型)_命令模式
- 大话设计模式_命令模式c++实现
- HeadFirst设计模式_读书笔记_005_命令模式
- 设计模式---命令模式
- 设计模式-命令模式
- codeforces 789C
- 492. Construct the Rectangle
- 像素和视口这些基本概念
- POJ 3616 Milking Time
- 关于Android引入高德地图、百度地图、Qrcode、Jpush等三方架包报32位、64位找不到问题
- 设计模式_命令模式
- C泛型编程—查找
- 验证码生成器
- Datatable的Select方法简介
- 免费的编程中文书籍索引
- java实现遍历树形菜单方法——index.jsp实现
- 2017-5-23 ESP 调试记录
- Android踩坑日记
- 我的VIM配置