命令模式概述
使用命令类可以将请求发送者和接受者完全解耦,发送者与接收者之间没有直接引用关系。
请求发送者针对抽象命令编程。
对于请求发送者而言,将针对抽象命令类进行编程,可以通过构造注入或者set注入在运行时插入具体命令对象。有点像策略模式。
把请求接受者封装成一个一个的命令,代理模式,适配器模式
lamda表达式对命令模式进行了优化,不需要创建命令类了
结构
优缺点
优点: 1、降低了系统耦合度。
2、新的命令可以很容易添加到系统中去。
缺点:使用命令模式可能会导致某些系统有过多的具体命令类。命令类和接受类是一对一的关系。
https://www.cnblogs.com/invoker-/p/7675320.html 可以解决这个问题。
思考 如果命令接受者们都实现了相同的接口,可以把命令类去了.但是如果接受者类没办法实现或者继承相同的类,只能由命令类来代理一下了。
应用和实现
命令队列,宏命令,撤销操作
命令队列
观察者模式和命令队列有点相似
有时候将多个请求排队,当一个请求发送者发送一个请求时,不止一个请求接受者产生响应。
应用场景:没想明白
1>系统需要将请求调用者和请求接受者解耦,使得调用者和接受者不直接交互。请求调用者无须知道接受者的存在,也无须知道接受者是谁。如果接受者都实现相同接口,就不需要命令类了。如果接受者杂七杂八,需要一个命令类。代理一下。
2>系统需要支持命令的撤销操作和恢复操作
3>宏命令 ,批量处理、
网友评论