设计模式之命令模式

关于命令模式,其实,很简单,就是2个角色,谁发出命令,谁接受?

比如说,将军发出命令,告诉,给我炸了对面的桥,那么士兵,就接到命令,去执行,具体怎么做?

但是,有可能将军一个一个亲口,告诉,是哪个士兵,给我具体怎么做吗?

绝对不可能,那将军不累死,中间肯定有个传递信息的,他知道将军的命令。


这个例子,就很好的说明了,命令模式,也就是对请求和接受的解耦。使2者之间不直接接触。

还有个生活中的例子,比如,你在家看电视的过程。

那你想看电视,那你就是(命令发出者),那你总不能直接对的电视说,我想看电影频道吧?(假如你家电视那么先进,当我没说),这里电视就是(命令接受者),

而这个过程中,你需要一个遥控器,它负责具体的开电视,关电视,换频道之类的事情。遥控器(就是个中间人,他知道谁发的命令,也知道应该具体怎么做)。

看这个模式的图片


抽象命令类(Command): 声明执行操作的接口。调用接收者相应的操作,以实现执行的方法Execute。

具体命令类(ConcreteCommand): 创建一个具体命令对象并设定它的接收者。通常会持有接收者,并调用接收者的功能来完成命令要执行的操作。 

调用者(Invoker): 要求该命令执行这个请求。通常会持有命令对象,可以持有很多的命令对象。

接收者(Receiver): 知道如何实施与执行一个请求相关的操作。任何类都可能作为一个接收者,只要它能够实现命令要求实现的相应功能。 

客户类(Client): 创建具体的命令对象,并且设置命令对象的接收者。真正使用命令的客户端是从Invoker来触发执行。 

命令模式,很好的把命令的请求,和具体的实现进行了分离,从而实现了解耦。
关于命令模式用到的地方,太多了,比如,你word里面的菜单了,还有structs里面的action类等等。
想看具体代码的朝这里搓: http://zz563143188.iteye.com/blog/1847029

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值