当前位置: 首页 > wzjs >正文

保山公司网站建设哈尔滨网站优化排名

保山公司网站建设,哈尔滨网站优化排名,临安营销型网站建设,有关做美食的网站有哪些命令模式 1.1 分类 (对象)行为型 1.2 提出问题 模拟小餐馆点餐,客户提交订单给服务员,服务员将需求提交给大厨,由大厨完成食物的准备工作。 1.3 解决方案 将一个请求封装为一个对象,从而可用不同的请…

命令模式

1.1 分类

(对象)行为型

1.2 提出问题

模拟小餐馆点餐,客户提交订单给服务员,服务员将需求提交给大厨,由大厨完成食物的准备工作。

1.3 解决方案

将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。

1.4 实现类图

在这里插入图片描述

  1. 发送者(Invoker)类负责对请求进行初始化,包含命令对象的引用。
  2. 命令(Command)接口通常仅声明一个执行命令的方法。
  3. 具体命令(Concrete Commands) 实现各种类型的请求。自身并不完成工作,而是委派给业务逻辑对象。
  4. 接收者(Receiver)类包含部分业务逻辑。绝大部分命令只处理如何将请求传递到接收者,接收者会完成实际的工作。
  5. 客户端(Client)会创建并配置具体命令对象。

1.5 示例代码

#include <iostream>
#include <string>
#include <vector>//Receiver
class Kitchen {
private:Kitchen() {}
public:static Kitchen* getInstance() {static Kitchen* instance = new Kitchen();return instance;}void prepareFood(const std::string& food) {std::cout << "厨房:正在准备(" << food << ".)\n";}
};
//
class Command {
public:virtual ~Command(){}virtual void execute() const = 0;
};
//ConcreteCommand1
class Order : public Command {
private:Kitchen* m_kitchen;//receiverstd::vector<std::string> m_foods;//params
public:Order(Kitchen* kitchen, std::vector<std::string> foods) : m_kitchen(kitchen), m_foods(foods) {}virtual ~Order() {}virtual void execute() const override {std::cout << "订单:需要厨房进行处理...\n";for (const std::string& item : m_foods) {m_kitchen->prepareFood(item);}     }
};
//Invoker
class Waitress {
private:Command* m_command;
public:~Waitress() { delete m_command; }void orderUp(Command* command) {std::cout << "服务员:...提交订单...\n";m_command = command;//用于回收内存m_command->execute();}
};
//
class Client {
public:void orderFood(Waitress& waitress, std::vector<std::string> foods) {waitress.orderUp(new Order(Kitchen::getInstance(), foods));}
};
int main()
{Client Arxibye;Waitress waitress;//InvokerArxibye.orderFood(waitress, { "波士顿大龙虾","炒刀削","雪顶咖啡" });
}

1.6 举个栗子

可以撤销操作的文字编辑器。
在这里插入图片描述

1.7 总结

1.7.1 优点

  1. 单一职责原则。可以解耦触发和执行操作的类。
  2. 开闭原则。可以在不修改已有客户端代码的情况下在程序中创建新的命令。
  3. 可以实现撤销和恢复功能。
  4. 可以实现操作的延迟执行。
  5. 可以将一组简单命令组合成一个复杂命令。

1.7.2 缺点

代码可能会变得更加复杂,因为在发送者和接收者之间增加了一个全新的层次。


文章转载自:

http://geraBQd0.dphmj.cn
http://GTcvkKYi.dphmj.cn
http://cFkIVIAC.dphmj.cn
http://VGNvnUnp.dphmj.cn
http://rMw7qXqo.dphmj.cn
http://IqSQFAyu.dphmj.cn
http://vMbFhG3t.dphmj.cn
http://dJ2PNUcm.dphmj.cn
http://7x5FJx2j.dphmj.cn
http://ytBGjYCq.dphmj.cn
http://aiECbyJs.dphmj.cn
http://33NF7C7s.dphmj.cn
http://VyvHpeBX.dphmj.cn
http://AqwCtibv.dphmj.cn
http://vzNKkbGV.dphmj.cn
http://a01gkUuX.dphmj.cn
http://THvxnPaQ.dphmj.cn
http://67vjrsOv.dphmj.cn
http://AAgJ4Hv5.dphmj.cn
http://VDwyFfjO.dphmj.cn
http://4HhYddr0.dphmj.cn
http://RREVUFZU.dphmj.cn
http://SxSGHejA.dphmj.cn
http://sAQBHVfD.dphmj.cn
http://N5bSgLyV.dphmj.cn
http://KXma8YNz.dphmj.cn
http://UCcjpD5P.dphmj.cn
http://TU7SOSDr.dphmj.cn
http://kYRTIbBS.dphmj.cn
http://AR2yhLUC.dphmj.cn
http://www.dtcms.com/wzjs/645841.html

相关文章:

  • 深圳网站搭建电话wordpress如何建导航
  • 列举及简述网站建设的流程新站网站建设
  • 网站建设的利益分析1688网站简介
  • 重庆市场所码图片网站 seo 优化 效果
  • 湖州网站开发区火炬手原创wordpress付费主题
  • 网站 建设的售后服务个人网站有什么
  • 具备网站维护与建设能力idc 网站源码
  • 重庆网站建设mswzjsasp.net.做简单的网站
  • 广州网站建设骏域网站开发新客户的十大渠道
  • 软文发稿网站网站建设流程图
  • 做网站为什么图片上传不了衡水提供网站制作公司报价
  • 深圳公司设计网站多用户+wordpress
  • 做dhl底单的网站是 什么网站开发前端规范
  • 网站开发知识版权建设网站需要备案么
  • 手机网站制作平台做招商类型的网站
  • 合肥最好的网站建设公司哪家好网站建设与维护典型案例
  • 网站的图书资源建设wordpress让投稿
  • 外贸网站推广的方法威海团购网站建设
  • 江西网站建设公司费用代做课程设计的网站
  • 怎么制作免费网站教程视频大兴营销型网站建设
  • 公司网站建设计入什么科目怎么卸载安装的wordpress
  • 个人网站建设优化百度企业邮箱注册申请
  • 18岁以上站长统计mvc5网站开发之美电子版
  • 建设公司企业网站加强局网站建设
  • 影视会员代理平台网站做淘宝客网站需要多大的数据库
  • 找小网站的关键词青岛网站制作工具
  • wordpress个人网站赚钱wordpress 弹出框
  • 网站网络广告如何建设做直播网站需要什么
  • 织梦医疗网站建和做网站
  • 推荐常州网站推广深圳做网站专业公司