设计模式入门之命令模式Command
2014-05-01 19:51
417 查看
//命令模式定义:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化 //对请求排队或者记录请求日志,以及支持可撤销的操作 //模式结构 //命令接口 public interface Command { public void execute(); } //具体的命令,需要封装与之对应的执行者Receiver public class ConcreteCommand implements Command { private Receiver receiver = null; private Stirng state; public ConcreteCommand(Receiver receiver) { this.receiver = receiver; } public void execute() { receiver.action(); } } //命令接受者即执行者 public class Receiver { public void action() { //真正执行命令操作的代码 } } //调用者,需要封装他所具备的命令 public class Invoker { private Command command = null; public void setCommand(Command command) { this.command = command; } public void runCommand() { command.execute(); } } //客户端 public class Client { public static void main(String args[]) { Receiver receiver = new Receiver(); Command command = new Command(receiver); Invoker invoker = new Invoker(); invoker.setCommand(command); invoker.runCommand(); } } //实例:主机开机的例子 //定义主板 public interface MainBoardApi { public void open(); } //某个主板类,相当与模式中的接受者,真正执行命令 public class GigaMainBoard implements MainBoardApi { public void open() { System.out.println("开机"); } } //命令接口 public interface Command { public void execute(); } //开机命令 public class OpenCommand implements Command { private MainBoardApi mainBoard = null; public OpenCommand(MainBoard mainBoard) { this.mainBoard = mainBoard; } public void execute() { this.mainBoard.open(); } } //机箱,包括了命令对象 public class Box { private Command openCommand; public void setOpenCommand(Command command) { this.openCommand = command; } public void openButtonPressed() { openCommand.execute(); } } //客户端,客户使用开机按钮 public class Client { public static void main(String args[]) { MainBoardApi mainBoard = new GigaMainBoard(); Command openCommand = new OpenCommand(mainBoard); Box box = new Box(); box.setCommand(openCommand); box.openButtonPressed(); } } //命令模式优点 //更松散的耦合 //命令模式使得命令的发起者-客户端,与命令的执行者-接受者对象完全耦合 //发起者完全不知道执行者是谁,也不知道如何实现
相关文章推荐
- JAVA设计模式之 命令模式【Command Pattern】
- java设计模式18——命令模式(Command)
- 设计模式系列3-----C++实现命令模式(Command Pattern)
- 6.偏头痛杨的常见设计模式入门系列之命令模式篇
- 23设计模式之命令模式(Command)
- <Head First 设计模式>:命令模式:Command
- C++设计模式-Command命令模式
- 设计模式之命令模式(Command Pattern)
- 设计模式:命令模式(Command)
- 设计模式之命令模式(Command)摘录
- 【设计模式】之 Command 命令模式
- 设计模式之:命令模式(Command Pattern)
- php设计模式 Command(命令模式)
- Java设计模式:命令模式(Command Pattern)
- 二十四种设计模式:命令模式(Command Pattern)
- [C++设计模式] command 命令模式
- 步步为营 .NET 设计模式学习笔记 九、Command(命令模式)
- 设计模式——行为型模式之 Command 命令模式
- 设计模式循序渐进(6)命令模式 command
- 设计模式(行为型)之命令模式(Command Pattern)