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

网站建设运营成本如何制作网页线上答题并生成证书

网站建设运营成本,如何制作网页线上答题并生成证书,鸿科经纬教网店运营推广,网站设计的需求《设计模式》命令模式 命令模式#xff08;Command Pattern#xff09;是一种行为型设计模式#xff0c;它将请求和处理分开#xff0c;使得请求发送者和接收者解耦#xff0c;从而降低系统的耦合度。在命令模式中#xff0c;请求被封装为一个独立的对象#xff0c;并且…《设计模式》命令模式 命令模式Command Pattern是一种行为型设计模式它将请求和处理分开使得请求发送者和接收者解耦从而降低系统的耦合度。在命令模式中请求被封装为一个独立的对象并且将其参数化以便在不同的请求中传递不同的参数。命令模式中的对象包括 请求者Invoker负责向命令对象发起请求并将命令对象设置为接收者的命令。命令Command封装了一次请求包括请求的接收者和对接收者的操作。命令对象可以执行操作、撤销操作和恢复操作。接收者Receiver真正执行命令操作的对象。接收者知道如何实现命令所要求的操作。客户端Client创建请求者、命令和接收者对象并将它们组装起来。 命令模式的基本思想是将请求封装为一个对象从而使请求的发送者和接收者之间解耦。通过将请求封装成命令对象可以将请求的调用者与实现者分离开来从而实现请求者和接收者之间的解耦。同时由于命令对象可以被序列化和存储因此可以支持撤销、重做、事务等功能。 在命令模式中可以通过多种方式来实现命令的撤销和重做。例如可以使用栈来保存每个命令的执行历史记录当需要撤销命令时从栈中弹出最近的一个命令并执行撤销操作当需要重做命令时从栈中弹出最近的一个撤销命令并执行恢复操作。另外还可以使用备忘录模式来实现命令的撤销和重做。 命令模式的优点包括 降低系统的耦合度。将命令的请求者和执行者分离使得它们不需要了解彼此的实现细节从而降低了系统的耦合度提高了系统的可维护性和可扩展性。易于扩展新的命令。由于命令模式将每个命令封装为一个独立的对象因此很容易添加新的命令只需要增加新的命令类即可。支持撤销和重做操作。由于每个命令对象都保存了执行历史记录因此可以通过撤销和重做操作来实现对命令的撤销和恢复。 命令模式适用于以下场景 当需要将命令的请求者和执行者解耦时可以使用命令模式。当需要支持撤销和重做操作时可以使用命令模式。当需要支持宏命令即由多个命令组成的一个命令时可以使用命令模式。当需要支持命令的排队、记录日志、事务等操作时可以使用命令模式。例如在数据库系统中可以使用命令模式来实现事务操作。 总之命令模式可以有效地解耦命令的请求者和执行者提高系统的可维护性和可扩展性。 #include iostream #include string #include vector// 接收者类执行具体的操作 class Receiver { public:void action1() {std::cout 接收者执行操作1 std::endl;}void action2() {std::cout 接收者执行操作2 std::endl;} };// 命令接口 class Command { public:virtual ~Command() {}virtual void execute() 0; };// 具体命令类实现命令接口 class ConcreteCommand1 : public Command { public:ConcreteCommand1(Receiver* receiver) : m_receiver(receiver) {}virtual ~ConcreteCommand1() {}virtual void execute() {m_receiver-action1();}private:Receiver* m_receiver; };class ConcreteCommand2 : public Command { public:ConcreteCommand2(Receiver* receiver) : m_receiver(receiver) {}virtual ~ConcreteCommand2() {}virtual void execute() {m_receiver-action2();}private:Receiver* m_receiver; };// 宏命令类由多个命令组成 class MacroCommand : public Command { public:MacroCommand() {}virtual ~MacroCommand() {}void addCommand(Command* cmd) {m_cmds.push_back(cmd);}virtual void execute() {for (auto cmd : m_cmds) {cmd-execute();}}private:std::vectorCommand* m_cmds; };// 命令发起者 class Invoker { public:Invoker() {}~Invoker() {}void setCommand(Command* cmd) {m_cmd cmd;}void executeCommand() {m_cmd-execute();}private:Command* m_cmd; };// 客户端代码 int main() {Receiver* receiver new Receiver();Command* cmd1 new ConcreteCommand1(receiver);Command* cmd2 new ConcreteCommand2(receiver);MacroCommand* macroCmd new MacroCommand();macroCmd-addCommand(cmd1);macroCmd-addCommand(cmd2);Invoker invoker;invoker.setCommand(macroCmd);invoker.executeCommand();delete cmd1;delete cmd2;delete macroCmd;delete receiver;return 0; }在上面的示例中我们定义了一个接收者类 Receiver它负责执行具体的操作。然后我们定义了两个具体命令类 ConcreteCommand1 和 ConcreteCommand2它们都继承自 Command 接口并包含一个指向 Receiver 对象的指针。在 execute 方法中它们会调用接收者对象的相应方法来执行具体操作。 接着我们定义了一个宏命令类 MacroCommand它由多个命令组成通过 addCommand 方法可以添加命令。在 execute 方法中它会依次执行每个命令。 然后我们定义了一个命令发起者 Invoker它包含一个成员变量 m_cmd指向一个命令对象通过 setCommand 方法设置命令对象通过 executeCommand 方法来执行命令。 最后我们在客户端代码中创建一个接收者对象和两个具体命令对象然后将它们添加到一个宏命令对象中。将宏命令对象设置为命令发起者的命令并执行命令。 这个命令模式实现还包括了宏命令宏命令是由多个命令组成的一个命令它可以一次性执行多个命令。在示例中我们定义了一个 MacroCommand 类来实现宏命令它包含了一个 std::vector 来存储多个命令对象。在 execute 方法中它会依次执行每个命令。 命令模式的优点是可以将命令的请求者和命令的执行者解耦使得请求者和执行者可以独立变化。同时命令模式也支持撤销和重做操作只需保存每个命令的执行历史记录即可实现。 需要注意的是命令模式的实现并不一定要包含接收者和宏命令这只是一个示例。在实际应用中可以根据需要进行设计。 C函数对象 Command模式与C中的函数对象有些类似。但两者定义行为接口的规范有所区别: Command以面向对象中的“接口-实现”来定义行为接口规范更严格但有性能损失;C函数对象以函数签名来定义行为接口规范更灵活性能更高。
http://www.hkea.cn/news/14456874/

相关文章:

  • 《网站开发实例》pdf下载南昌建设医院网站
  • 合川网站建设公司做产品类网站有哪些内容
  • 企业网站的优化摄影婚纱网站建设
  • 又拍网站怎么做网站正在建设中 图片
  • 网站设计基础知识WordPress内容整合
  • 网站flash模板网站建设怎么设计更加吸引人
  • 大型移动网站开发怎样做京东网站
  • 网站站点结构的构建重庆网络营销渠道
  • 西安优秀的集团门户网站建设公司c语言必背100代码
  • 网站建设公司骗人做普通网站选择什么服务器
  • 做微博长图的网站天津城市建设大学网站
  • 东莞企业网站设计排名温州市城市建设学校网站
  • 在线做漫画网站南昌做企业网站
  • 旅游门户网站源码怎么做的如何优化关键词
  • 义乌建设网站制作成都市分类信息网站开发
  • 建设网站建设白度经验wordpress美化登录
  • 建网站app需要多少钱科讯cms 网站地图
  • 网站建设的售后服务流程著名的设计作品有哪些
  • 大连网站建设-中国互联北京app制作公司
  • 做微网站公司名称手机网页制作图片
  • 外贸平台有哪些小网站找大连做企业网站的公司
  • 网站提交地址资阳公司短视频优化服务
  • 怎样找到免费的黄页网站中山网站建设平台
  • 海安市建设局网站短链接在线生成器
  • discuz 旅游网站模版只做网站应该找谁
  • 盐城市住房城乡建设网站开鲁seo网站
  • 个人接网站开发的平台网站代运营做哪些
  • 湖北襄阳住房保障和城市建设局网站wordpress文章编辑器插件
  • 网站开发小组分工如何建立国际网站
  • seo综合查询 站长工具广西建设职业技术学院图书馆网站