标签:
4 第四步:在适当的时候让调用者执行命令
3.3 demo
package limanman;
import java.util.ArrayList;
import java.util.List;
public class CommandTest {
public static void main(String[] args) {
Client.run();
}
}
class Client {
public static void run() {
/**
* 第一步:初始化所有的接受者
*/
Receiver1 receiver1 = new Receiver1();
Receiver2 receiver2 = new Receiver2();
/**
* 第二步:创建所有的命令对象
*/
Command command1 = new ConcreateCmonmand1(receiver1);
Command command2 = new ConcreateCmonmand2(receiver2);
/**
* 第三步:调用者加载命令
*/
Invoker invoker = new Invoker();
invoker.setCommand(command1);
invoker.setCommand(command2);
/**
* 第四步:在适当的时候让调用者执行命令
*/
invoker.callRecever(0);
invoker.callRecever(1);
}
}
/**
* 接受者1,一个具体命令对应一个具体接收者
*
* @author limanman
* @date 2015年10月12日
*/
class Receiver1 {
public void action() {
System.out.println("接收者1执行具体的操作");
}
}
/**
* 接受者2,一个具体命令对应一个具体接收者
*
* @author limanman
* @date 2015年10月12日
*/
class Receiver2 {
public void action() {
System.out.println("接收者2执行具体的操作");
}
}
/**
* 命令角色
*
* @author limanman
* @date 2015年10月12日
*/
interface Command {
public void excute();
}
/**
* 角色: 具体命令
*
* @author limanman
* @date 2015年10月12日
*/
class ConcreateCmonmand1 implements Command {
Receiver1 receiver1;
public ConcreateCmonmand1(Receiver1 receiver1) {
this.receiver1 = receiver1;
}
@Override
public void excute() {
System.out.println("执行命令1");
receiver1.action();
}
}
class ConcreateCmonmand2 implements Command {
Receiver2 receiver2;
public ConcreateCmonmand2(Receiver2 receiver2) {
this.receiver2 = receiver2;
}
@Override
public void excute() {
System.out.println("执行命令2");
receiver2.action();
}
}
/**
* 角色:invoker
*
* @author limanman
* @date 2015年10月12日
*/
class Invoker {
List<Command> commands = new ArrayList<Command>();
/**
* 设置命令
*
* @param command
* @date 2015年10月12日
* @author 佚名
*/
public void setCommand(Command command) {
commands.add(command);
}
/**
* 调用者持有一系列命令对象,并在某个时间点调用对象的excute方法,将请求付诸实行
*
* @param slot
* @date 2015年10月12日
* @author 佚名
*/
public void callRecever(int slot) {
commands.get(slot).excute();
}
}
输出:
执行命令1
接受者1执行具体的操作
执行命令2
接受者2执行具体的操作
标签:
原文地址:http://my.oschina.net/fengshuzi/blog/515803