设计模式之命令模式

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

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

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

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

 

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

 

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

运行结果为:

1: ExecuteCommand

Light::LightOnCmd!

Door::DoorOnCmd!

Light::LightOffCmd!

Door::DoorOffCmd!

2: ExecuteCommand

Light::LightBrokenCmd

Light::UnknownCmd!

Door::DoorBrokenCmd!

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

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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值