简述:
Command 命令模式:(参考http://wenku.baidu.com/view/798cc2f6f61fb7360b4c654a.html)
我理解的Command,通过interface调用不同具体实现
例如 执行一条命令,但是不关注是什么命令,那么只需要提供这个命令的接口方法的实现,给调用者就可以了,
在调用者自定义的方法里面可以执行打开电视,打开电灯。。等等
代码:
Command.java
package mp; public interface Command { void Execute(); }
package mp; public class TV { public TV(){ } public void OpenScreen(){ System.out.println("TV is showing"); } }
package mp; /** * 关于电视操作的具体的实现 */ public class TVOnCommand implements Command { private TV tv; public TVOnCommand(){} public TVOnCommand(TV tv){ this.tv = tv; } public void Execute() { tv.OpenScreen(); } }
package mp; public class Invoker { private Command command; public void runCommand() { command.Execute(); } public void setCommand(Command command) { this.command = command; } }
package mp; public class Main { public static void main(String[] args){ TV tv = new TV(); TVOnCommand toc = new TVOnCommand(tv); Invoker invoker = new Invoker(); invoker.setCommand(toc); invoker.runCommand(); } }
这里我把电视机打开抽象成为一条命令,也就是把TVOnCommand的execute()方法传给了Invoker类的command接口成员,在Invoker中,它帮我实现了runCommand的方法
至于里面究竟是开电视机还是开别的什么,已经不重要了。
输出: