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

商务网站开发文档有人打电话说请我做网站 骗子

商务网站开发文档,有人打电话说请我做网站 骗子,雨果网跨境电商官网,发布页全部页面设计命令模式是一种行为型设计模式#xff0c;它将请求封装成一个对象#xff0c;从而能使你可以用不同的请求对客户端进行参数化。该模式允许请求的发送者和接收者进行解耦#xff0c;发送者不需要知道接收者的信息#xff0c;只需要通过命令对象来与它进行交互。 命令模式有…命令模式是一种行为型设计模式它将请求封装成一个对象从而能使你可以用不同的请求对客户端进行参数化。该模式允许请求的发送者和接收者进行解耦发送者不需要知道接收者的信息只需要通过命令对象来与它进行交互。 命令模式有四个角色 1、抽象命令它定义了执行操作的接口包含一个执行方法和一个可选的撤销操作这里的撤销是撤销命令恢复成上一个命令执行的结果。 2、具体命令实现了命令接口持有接收者对象的引用负责在接收者上执行操作。 3、接收者执行命令所代表的操作 4、调用者持有命令对象发送请求并触发命令执行。 举例 使用遥控器控制电灯的开和关。 #include iostream #include memory// 接收者-电灯 class Light { public:void On(){std::cout 电灯已经打开 std::endl;}void Off(){std::cout 电灯已经关闭 std::endl;} };// 抽象命令 class ICommand { public:virtual ~ICommand() {}virtual void Execute() 0;virtual void Undo() 0;protected:std::shared_ptrLight light_; };// 具体命令-打开电灯 class CloseLight: public ICommand { public:CloseLight(std::shared_ptrLight _light){light_ _light;}virtual void Execute() override{light_-On();}virtual void Undo() override{light_-Off();} };// 具体命令-关闭电灯 class OpenLight: public ICommand { public:OpenLight(std::shared_ptrLight _light){light_ _light;}virtual void Execute() override{light_-Off();}virtual void Undo() override{light_-On();} };// 调用者-遥控器 class RemoteControl { public:void SetCommand(std::shared_ptrICommand _command){command_ _command;}void PressButton(){if(command_)command_-Execute();}void Undo(){if(command_)command_-Undo();}private:std::shared_ptrICommand command_; };示例中我们首先定义了一个抽象命令接口ICommand定义了两个方法Exectue()和Undo()分别用于执行操作和撤销命令。 然后我们又创建了两个具体的命令类OpenLight和CloseLight分别实现了这两个方法。这些具体命令类会持有对接收者对象Light的引用通过执行方法调用相应的操作。 最后创建了一个调用者角色RemoteControl作为遥控器。遥控器持有一个命令对象提供设置命令对象和触发命令的执行方法。通过按下PressButton执行具体的命令通过Undo撤销命令。 测试 void TestCommand() {// 创建接收者std::shared_ptrLight light std::make_sharedLight();// 创建命令std::shared_ptrICommand openLight std::make_sharedOpenLight(light);std::shared_ptrICommand closeLight std::make_sharedCloseLight(light);// 创建调用者std::shared_ptrRemoteControl remoteControl std::make_sharedRemoteControl();// 设置命令remoteControl-SetCommand(openLight);remoteControl-PressButton();remoteControl-Undo();remoteControl-SetCommand(closeLight);remoteControl-Undo(); }测试代码中我们创建了两个具体命令打开电灯和关闭电灯、一个接收者也就是电灯、一个遥控器对象。 通过遥控器设置命令按下按钮就可以执行具体的命令。 输出结果 电灯已经打开 电灯已经关闭 电灯已经打开可以看到我们先设置命令为打开电灯按下按钮电灯已经打开执行撤销方法电灯就被关闭然后我们设置命令为关闭电灯执行撤销方法电灯就被打开。 所以这里的撤销其实是撤销当前命令。 命令模式遵顼的设计原则 1、单一职责原则每个命令类负责执行一个特定的命令。 2、开放封闭原则可以动态的添加或删除命令不影响现有代码。 3、里氏替换原则命令模式中的具体命令类是抽象命令的子类因此可以通过具体命令类的替换来扩展和改变命令的行为。 4、接口隔离原则命令模式通过抽象命令和具体命令的设计可以将不同的请求封装成不同的命令类从而避免大量的接口在同一个类中定义。 优点 1、解耦对象间的关系命令模式将请求者和接收者解耦使得命令发送者只需要知道抽象命令类不需要知道具体的接收者降低了系统的耦合度。 2、容易扩展新的命令新增一个命令非常容易不需要修改现有代码符合开闭原则。 3、支持撤销和重做操作命令模式可以将命令对象存储在历史记录中实现命令的撤销和重做 4、支持队列请求和日志化请求命令模式可以将命令对象放入队列中实现对请求的排队和延迟执行还可以将命令对象做持久化处理实现对请求的日志记录。 缺点 1、增加了系统的复杂度引入了多个命令类、接收者类、调用类增加了系统的复杂度。 2、可能会使类膨胀每个命令都需要一个具体的命令类去实现如果命令太多就会造成类的数量过于膨胀增加了系统的维护成本。
http://www.yutouwan.com/news/434193/

相关文章:

  • 微信公众号制作网站郑州艾特网站建设公司
  • 立邦漆官方网站官网手机开发框架
  • 怎么在网站里给图片做超链接淘宝店铺推广
  • 网站设计专业建站公司怀化招标网站
  • 石家庄大的网站开发公司辽宁省建设工程信息网网
  • 在阿里云里网站建设的步骤过程微信小程序开发技术
  • 互联在线app开发网站怎么添加网站
  • 网站小图标素材下载天津百度首页优化排名
  • 有哪些网站可以做家教wordpress 有市场吗
  • 电商型网站是否是趋势甘肃建投土木工程建设有限公司网站
  • 怎么查网站备案asp.net企业网站管理系统
  • 怎样给自己做网站惠安县住房和城乡建设部网站
  • 怎样搭建网站视频教程接单网个人接单
  • 网站建设的文章做盗版网站违法吗
  • 重庆网站首页制作鄂州网站建设哪家好
  • 网站线框图用什么做写一篇软文1000字
  • 集团网站设计专业团队网站建设主要内容
  • c 鲜花店网站建设做旅游计划的网站
  • 生鲜做的好的网站手机优化设置
  • 网站开发代码无中文好f123网站
  • html网站开发wordpress内置编辑器
  • 设计师找工作的网站三星网上商城退款很慢
  • 上海定制网站建设费用河东苏州网站建设
  • 郑州网站建设公司制作定制免费友情链接交换平台
  • 2018年靖边建设项目招投标网站大兴企业官网网站建设报价
  • 本地搭建asp网站蓝色网站
  • ai怎么做自己的网站wordpress修改我要注册链接
  • 衡阳网站seo做网站买完域名还要
  • 宁夏网站建设哪家好网站制作中动态展示怎么做
  • 连云港做网站推广国外设计网站的案例