设计模式(4)-行为型-命令模式(Command)
2016-08-24 21:22
489 查看
意图:
将一个请求封装为一个对象(即我们创建的Command命令对象),从而使你可用不同的请求对客户进行参数化; 对请求排队或记录请求日志,以及支持可撤销的操作。
个人理解:
命令模式是为了解决命令的请求者和命令的实现者之间的耦合关系。
命令模式通过命令执行者、具体命令、命令请求者来达到请求与实现解耦。
可以更方便的对命令进行扩展。
也可以对多个命令进行统一控制。
适用性:
在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。
简单代码,便于理解:
将一个请求封装为一个对象(即我们创建的Command命令对象),从而使你可用不同的请求对客户进行参数化; 对请求排队或记录请求日志,以及支持可撤销的操作。
个人理解:
命令模式是为了解决命令的请求者和命令的实现者之间的耦合关系。
命令模式通过命令执行者、具体命令、命令请求者来达到请求与实现解耦。
可以更方便的对命令进行扩展。
也可以对多个命令进行统一控制。
适用性:
在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。
简单代码,便于理解:
/** * 命令执行者 */ public class Receiver { public void execute(){ System.out.println("命令执行者"); } } /** * 命令接口 */ public interface Command { public void execute(); } /** * 具体命令 */ public class ConcreteCommand implements Command { private Receiver receiver; public ConcreteCommand(Receiver receiver){ this.receiver = receiver; } public void execute() { receiver.execute(); } } /** * 命令请求者 */ public class Invoker { private Command command = null; public void setCommand(Command command) { this.command = command; } public void runCommand() { command.execute(); } } public static void main(String[] args){ //创建接收者 Receiver receiver = new Receiver(); //创建命令对象,设定它的接收者 Command command = new ConcreteCommand(receiver); //创建Invoker,把命令对象设置进去 Invoker invoker = new Invoker(); invoker.setCommand(command); }
相关文章推荐
- 设计模式十五:command(命令模式)——对象行为型模式
- PHP设计模式:行为型之命令(Command)
- 23种设计模式(14)_行为型_命令模式(Command Pattern)
- 设计模式(4)-行为型-命令模式(Command)
- 设计模式(行为型)之命令模式(Command Pattern)
- JAVA设计模式(15):行为型-命令模式(Command)
- 十七.行为型设计模式——Command Pattern(命令模式)
- 设计模式之命令(Command)---对象行为型模式
- JAVA设计模式(15):行为型-命令模式(Command)
- 设计模式--命令模式Command(对象行为型)
- 设计模式学习总结7 - 行为型2 - Command命令模式
- [导入]C#面向对象设计模式纵横谈(15):(行为型模式) Command 命令模式.zip(7.56 MB)
- 设计模式(4)-行为型-命令模式(Command)
- 设计模式(14)-行为型-命令模式(Command)
- 设计模式学习之命令模式(Command,行为型模式)(12)
- 设计模式--命令模式Command(行为型)
- 设计模式(4)-行为型-命令模式(Command)
- C#面向对象模式设计第十五讲:Command 命令模式(行为型模式)