Command 模式

简述:

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

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


输出:


你可能感兴趣的:(Command 模式)