命令模式(Command Pattern)

       将一个请求封装成一个对象,因此可以参数化多个客户的不同请求,将请求排队,记录请求日志,并且支持撤销操作。

抽象命令类(Command ):声明执行操作的一个接口
具体命令类(Concrete Command ):将一个接受者对象绑定于一个动作,实现Execute方法,以调用接受者的相关的操作。
客户应用程序(Client ):创建一个具体命令类的对象,并且设定它的接受者。
调用者(Invoker ):要求一个命令对象执行一个请求。
接受者(Receiver ):知道如何执行相关联的相关操作。
范例:1.餐馆顾客点菜,顾客只需要向服务员下订单点菜,不需要知道那个厨师做这个菜,顾客所要做的只是把订单交给服务员就可以了。这带来了很大的灵活性,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。
             2.我们设计一个Switch类(总开关),它可以开关风扇,也可以开关灯。开关类会有两个方法,一个是开,一个是关,它不用知道具体开关什么。Command模式将开关的请求变成对象传给Switch,这个请求可以存储或转交给其他对象。Command模式的关键是要具有Command接口,声明executed(执行)的操作。在这个例子中,Switch(开关)是调用者,因为它调用了execute的操作。
优势和缺陷
命令模式分离了接受请求的对象与实现处理请求工作的对象,这样,已经存在的类可以保持不变,使得增加新类的工作更简单。例如。很多软件的宏命令就提高了系统的自动化程度。
命令模式还可分离用户界面和义务对象,降低系统的耦合度。但是,命令模式最主要的缺陷就是,类的数量增加了,系统变得更加复杂,程序的调试工作也相应变得困难。
应用情景
1.       当你需要与动作有关的对象来作为参数。
2.       你需要在不同的时间创建请求,生成请求队列,执行请求。
3.       你需要支持取消、保存修改日志或处理事务(事务包括大量修改的数据)功能。
4.       你需要支持宏命令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值