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!

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

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

     

     

  • 相关阅读:
    求成绩表中各门课程前三名
    GridView绑定时通过RowDataBound事件获取数据源列值
    在运行时获取ibatIS执行的sql
    Java基础:数组Array转成List的几种方法
    python之格式化输出
    python之集合【set】
    每日日报
    每日日报
    每日日报
    每日日报
  • 原文地址:https://www.cnblogs.com/KevinYuen/p/2940366.html
Copyright © 2011-2022 走看看