Command 模式

来源:互联网 发布:windows已激活是正版吗 编辑:程序博客网 时间:2024/05/21 16:24

简述:

Command 命令模式:(参考http://wenku.baidu.com/view/798cc2f6f61fb7360b4c654a.html)

我理解的Command,通过interface调用不同具体实现

例如 执行一条命令,但是不关注是什么命令,那么只需要提供这个命令的接口方法的实现,给调用者就可以了,

在调用者自定义的方法里面可以执行打开电视,打开电灯。。等等



代码:

Command.java

package mp;public interface Command {void Execute();}

TV.java

package mp;public class TV {public TV(){}public void OpenScreen(){System.out.println("TV is showing");}}

TVOnCommand.java

package mp;/** * 关于电视操作的具体的实现 */public class TVOnCommand implements Command {private TV tv;public TVOnCommand(){}public TVOnCommand(TV tv){this.tv = tv;}public void Execute() {tv.OpenScreen();}}

invoker.java

package mp;public class Invoker {private Command command;public void runCommand() {command.Execute();}public void setCommand(Command command) {this.command = command;}}

Main.java

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的方法

至于里面究竟是开电视机还是开别的什么,已经不重要了。


输出:


原创粉丝点击