设计模式之命令模式(Command)

本文介绍了命令模式的基本概念,探讨了如何将请求封装成对象,并通过UML图和时序图展示了命令模式的工作原理。同时,文章还讲解了宏命令的概念及其在实际应用中的表现形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

命令模式:将“请求/命令”封装成对象,无需了解这个请求的执行者以及处理细节。

 

谁来执行和处理这个命令对于命令的发号者来说并不关心,发号命令者只管发号施令而不关注执行者以及执行细节,而命令的执行者只管执行命令而不关注命令是由谁来发号的。命令模式能将发号施令者与命令的执行者解耦。他们只需要关注于命令对象。命令模式可能会产生额外的很多的子类,给系统增加复杂性。

 

命令模式UML图:


命令模式时序图:


根据单一职责的设计原则,通常我们会把一个命令(do something)封装为一个Command对象,有时我们也会一个命令的一组行为(such as:do something/undo something,but the something must be the same thing.)封装为一个Command对象。

 

宏命令

一个命令他包含有一组其他的命令,当宏命令execute方法被调用时,他会调用一组命令的execute方法,各个不同的command对象有他们自己的Receiver,如图所示:


宏命令类图上和装饰者模式有类似之处,装饰者与被装饰者都有着相同的父类,且装饰者有被装饰者的引用。也就是说一个宏命令不仅能装饰普通的命令对象(可能是简单的委托调用,也可能装饰些新的功能),他自己也能被其他的宏命令对象装饰。

 

不是所有的Command对象都有自己的Receiver,他们也可以自己执行命令,而且没有Receiver的Command很常见。

 

参考资料:

Head First 设计模式 (中国电力出版社)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值