public class Receriver {
public void say(){
System.out.println("接受者执行方法");
}
}
接受者中的say()方法是具体执行的方法,也就是请求者要调用的方法。public interface Command {
public void execute();
}
然后看一下命令接口的实现类,该类中包括一个命令接受者,在实例化该命令时,为该命令传入一个命令接受者,用于执行具体操作。public class CommandImpl implements Command {
private Receriver rec;
public CommandImpl(Receriver rec){
this.rec = rec;
}
@Override
public void execute() {
rec.say();
}
}然后再看命令请求者,该类中包括一个命令接口,当他 要执行某些操作时,只需要将具体命令传入即可。public class Invoker {
public Command command;
public void setCommand(Command command) {
this.command = command;
}
public void run(){
command.execute();
}
}
public class Test {
public static void main(String[] args) {
//创建接受者
Receriver rec = new Receriver();
//创建命令对象,并为命令对象传入接受对象
Command command = new CommandImpl(rec);
//创建请求者对象
Invoker invoker = new Invoker();
//将命令对象传入请求者对象中
invoker.setCommand(command);
invoker.run();
}
}生活中典型的命令模式是用遥控控制电视机开关以及切换频道,下面看一下具体演示。public class TV {
public void turnon(){
System.out.println("电视开机……");
}
public void turnoff(){
System.out.println("电视关机……");
}
public void changeChannel(int currentChannel){
System.out.println("当前频道"+currentChannel);
}
}通过遥控器控制电视相当于向电视发送一条条命令,下面看一下命令接口以及执行相应命令的接口。public interface Command {
public void execute();
}
下面是开机命令public class CommandOn implements Command {
private TV tv;
public CommandOn(TV tv){
this.tv = tv;
}
@Override
public void execute() {
tv.turnon();
}
}
下面是关机命令public class CommandOff implements Command {
private TV tv;
public CommandOff(TV tv){
this.tv = tv;
}
@Override
public void execute() {
tv.turnon();
}
}下面是切换频道命令public class CommandChange implements Command {
private TV tv;
private int channel;
public CommandChange(TV tv,int channel){
this.tv = tv;
this.channel = channel;
}
@Override
public void execute() {
tv.changeChannel(channel);
}
}遥控器相当于请求者,向电视发送一个个命令。下面看一下控制类。public class Contorl {
private Command commandon,commandoff,commandchange;
public Contorl(Command commandon,Command commandoff,Command commandchange){
this.commandon = commandon;
this.commandoff = commandoff;
this.commandchange = commandchange;
}
public void turnOn(){
commandon.execute();
}
public void turnOff(){
commandoff.execute();
}
public void turnChange(){
commandchange.execute();
}
}
然后我们看一下测试类public class Test {
public static void main(String[] args) {
TV mytv = new TV();
//开机命令
Command on = new CommandOn(mytv);
//关机命令
Command off = new CommandOff(mytv);
//切换频道命令
Command change = new CommandChange(mytv, 5);
//创建控制对象
Contorl cont = new Contorl(on, off, change);
//开机操作
cont.turnOn();
//切换频道
cont.turnChange();
//关机操作
cont.turnOff();
}
}命令模式实现了请求者和接受者之间操作的解耦合。原文:http://blog.csdn.net/u011740475/article/details/41647981