zoukankan      html  css  js  c++  java
  • 设计模式之命令模式

    Command Pattern:将请求封装成对象,这可以让你使用不同的请求,队列,或者是日志请求来参数化其他对象,命令模式也可以支持撤销操作。

    命令模式有两种实现方式:

    1.      在命令管理器中提供设置当前命令接受者的方法,当执行消息或者是有消息压入的时候直接将命令发送给当前设置的接受者。

    2.      在命令管理器中建立一个命令接收器队列,通过注册和注销的方式动态增减,而每个接收器会接受到命令,但是只需要针对自己关心的命令进行处理即可。

     

    第一种方式比较简单,忽略,重点完成第‘二种方式的测试;

     

    然后适用下面的测试代码:

    运行结果为:

    1: ExecuteCommand

    Light::LightOnCmd!

    Door::DoorOnCmd!

    Light::LightOffCmd!

    Door::DoorOffCmd!

    2: ExecuteCommand

    Light::LightBrokenCmd

    Light::UnknownCmd!

    Door::DoorBrokenCmd!

    从输出结果可以看出实现了简单的命令发送和执行双方的解耦,我们可以随时增减命令的接受者而不需要对原来已经编码好的模块或者类进行修改,这样就具有了很强的扩展性和可维护性,另外在程序里面我们将消息处理的返回做了一个扩展,返回三个值,其中新增的一个返回是“终止”,就是告诉命令管理器,这个命令是我的专属命令,已经执行完了,不需要再下发给其他的接受者了,他们根本不需要。这样提高了效率。

    在游戏开发中,命令系统和消息系统是很常见的,实现的方法差不多。

     

     

  • 相关阅读:
    《敏捷开发修炼之道》学习笔记3:交付用户想要的软件
    Photoshop快捷键大集合
    如何制作已编译的HTML帮助文件(即CHM帮助文件)
    根本不存在 DIV + CSS 布局这回事
    可将视频转换成Gif动画的相关软件
    SEO是什么?与spam有什么区别呢?
    视频六大编辑软件大比拼
    陈彤:一个网络编辑的11年
    最近出现的p2psvr.exe恶意程序的解决办法
    使用火狐浏览器Firefox的一些小技巧
  • 原文地址:https://www.cnblogs.com/KevinYuen/p/2940366.html
Copyright © 2011-2022 走看看