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

潍坊市建设厅网站wordpress post slug

潍坊市建设厅网站,wordpress post slug,企业商务网站建设论文,广西柳州网站建设价格承接Qt/C软件开发项目#xff0c;高质量交付#xff0c;灵活沟通#xff0c;长期维护支持。需求所寻#xff0c;技术正适#xff0c;共创完美#xff0c;欢迎私信联系#xff01; 一、命令模式的说明 命令模式#xff08;Command Pattern#xff09;是一种行为设计模式… 承接Qt/C软件开发项目高质量交付灵活沟通长期维护支持。需求所寻技术正适共创完美欢迎私信联系 一、命令模式的说明 命令模式Command Pattern是一种行为设计模式它允许将请求封装成对象从而使得可以将请求参数化、队列化、并且可以用不同的请求来参数化客户端调用者的对象。这个模式也支持可撤销的操作。 命令模式通常包括以下几个角色 Command命令: 定义了执行操作的接口通常包括执行方法execute()和可能的撤销方法undo()。 ConcreteCommand具体命令: 实现了Command接口持有执行操作所需的相关信息包括对接收者对象的引用。 Invoker调用者: 请求的发送者通过命令对象来执行请求。 Receiver接收者: 实际执行操作的对象。 二、命令模式的场景 命令模式在实际应用中有很多常见的案例以下是其中一些常用的情况 菜单和按钮操作在图形用户界面GUI应用程序中菜单项和按钮通常可以被抽象为命令对象。当用户点击菜单项或按钮时相应的命令被执行这样做的好处是可以将用户操作与具体的执行操作解耦。 多级撤销Undo操作命令模式支持撤销操作因此它在需要实现撤销多个步骤的应用程序中很有用。每个命令对象可以保存执行操作的状态以便在撤销时恢复到先前的状态。 任务调度器命令模式可以用于实现任务调度器其中每个任务可以被封装成一个命令对象并且可以按照一定的顺序执行。 日志记录命令模式可以用于实现日志记录系统每个命令对象的执行都可以被记录下来从而实现日志记录功能。 遥控器和家电控制像前面示例中的遥控器一样命令模式常用于实现遥控器和家电的控制系统。每个按钮可以关联一个命令对象当按下按钮时执行相应的命令。 数据库事务处理在数据库操作中命令模式可以用于实现事务处理每个数据库操作可以被封装成一个命令对象事务的提交或回滚可以看作是对一系列命令对象的执行或撤销。 三、命令模式的优缺点 优点 解耦调用者和接收者命令模式通过将请求封装成独立的命令对象从而解耦了请求的发送者和接收者。这使得系统中的对象不需要知道彼此的细节降低了对象之间的耦合度提高了系统的灵活性。 支持撤销和重做由于命令对象通常会保存执行所需的状态信息因此可以很容易地支持撤销和重做操作。这对于实现撤销历史记录、撤销栈等功能非常有用。 支持命令的排队执行命令模式可以将请求排队并按照一定的顺序执行。这对于实现任务调度器等功能很有用。 容易扩展通过添加新的命令类和接收者类可以很容易地扩展命令模式而不需要修改现有的代码。这样使得系统更加灵活和可扩展。 中心化控制命令模式将请求封装成对象使得可以在系统中集中控制命令的执行。这样可以更好地管理和维护系统的行为。 缺点 类爆炸如果系统中有大量的命令类和接收者类可能会导致类的数量急剧增加从而增加了系统的复杂性。 可能引入过多的代码在某些情况下引入命令模式可能会增加过多的代码量特别是对于简单的功能而言直接调用函数可能更加简单和直接。 增加了系统的复杂性命令模式增加了系统中的额外的抽象层次可能会增加系统的理解和维护成本。 不适用于所有情况命令模式并不适用于所有的情况特别是对于简单的功能而言引入命令模式可能会显得过于复杂。 可能降低执行效率由于命令模式需要将请求封装成对象可能会导致额外的性能开销特别是在系统需要频繁创建和销毁命令对象的情况下。 四、命令模式的代码 #include iostream #include string #include memory// Command Interface class Command { public:virtual ~Command() {}virtual void execute() 0; };// Receiver class Light { public:void turnOn() {std::cout Light is on\n;}void turnOff() {std::cout Light is off\n;} };// Concrete Command class TurnOnCommand : public Command { public:TurnOnCommand(std::shared_ptrLight light) : m_light(light) {}void execute() override {m_light-turnOn();} private:std::shared_ptrLight m_light; };class TurnOffCommand : public Command { public:TurnOffCommand(std::shared_ptrLight light) : m_light(light) {}void execute() override {m_light-turnOff();} private:std::shared_ptrLight m_light; };// Invoker class RemoteControl { public:void setCommand(std::shared_ptrCommand command) {m_command command;}void pressButton() {m_command-execute();}private:std::shared_ptrCommand m_command; };int main() {// Receiverstd::shared_ptrLight light std::make_sharedLight();// Concrete Commandsstd::shared_ptrCommand turnOnCommand std::make_sharedTurnOnCommand(light);std::shared_ptrCommand turnOffCommand std::make_sharedTurnOffCommand(light);// InvokerRemoteControl remote;// Set commandsremote.setCommand(turnOnCommand);remote.pressButton(); // Output: Light is onremote.setCommand(turnOffCommand);remote.pressButton(); // Output: Light is offreturn 0; }
http://www.pierceye.com/news/68955/

相关文章:

  • 泸州网站建设价格文化类网站建设方向
  • 仿做网站wordpress登入后台
  • 网站主机托管请打开app
  • 做网站几百块可信吗如何制作产品网站
  • 网站上那些兼职网页怎么做的微信手机版登录入口
  • 免费茶叶网站建设视频直播怎么赚钱的
  • 织梦茶叶网站模板免费下载关于计算机网站建设的论文
  • 哪个网站做logo好跨境电商 网站开发
  • 网站建设外文文献深圳市建设注册执业资格中心网站
  • 网站建设生存期模型大连模板网站制作费用
  • 东莞网站建设快速排名苏州小程序定制开发公司
  • 网站维护工作内容浙江省建设厅官网证件查询
  • 网站做聚合页面方案如何写做外贸怎样上国外网站
  • 专门做考研的网站现在推广平台哪家最好
  • 怎么申请网站域名赚钱wordpress固定连接
  • 做一个网站要注意什么东西专业的英文网站建设
  • 永久免费素材网站网站点击量作用
  • 建设网站便宜网页制作 收集资料
  • 网站源码有什么用各大网站怎么把世界杯做头条
  • windows网站模板扬州网站建设suteng
  • 编写网站 语言关键词优化分析工具
  • 国外商品网站如何开发高端市场
  • 网站建设款计入什么科目网站开发可以入无形资产吗
  • 织梦做淘宝客网站wordpress 输出菜单
  • 大型门户网站制作教程wordpress 同步
  • 如何做企业网站开发阳性几天就不传染人了
  • 百度查重免费百度seo代理
  • 抄袭别人网站的前端代码合法吗wordpress主题免费和付费
  • 公司网站自己可做吗医院建筑工程网
  • 51素材网wordpress 极致优化