定义:将一个请求封装成一个对象,从而让用户使用不同的请求把客户端参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。
就是对命令的封装,把发送命令和执行命令的责任分隔开,分别委派给不同的对象,每个命令都是一个操作,允许请求方与接收方独立开来,使请求方不必清楚接收方的接口,更不必知道请求是怎么被接收,操作,执行。
使用场景:
(1)整个调用过程比较繁杂,或者存在多处这种调用。使用Command类对该调用加以封装,便于功能的再利用。
(2)调用前后需要对调用参数进行某些处理。
(3)调用前后需要进行某些额外处理,比如日志,缓存,记录历史操作等。
定义命令接口
水果
点水果命令
取消水果命令
牛奶类
点牛奶命令
取消牛奶命令
菜单类
测试
输出
命令模式里还有一个宏命令的概念,包含一组命令
测试
输出
或许程序员更喜欢类似于下面的写法
那为什么要整那么复杂呢?
正如我们前面所提到的使用场景,使用命令模式我们可以在调用前后需要对调用参数进行某些处理也可以在调用前后进行某些额外处理,比如日志,缓存,记录历史操作等。
参考
http://blog.chinaunix.net/uid-29140694-id-4134135.html
https://my.oschina.net/u//blog/
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/4959.html