定义: 命令模式将‘请求’封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象,命令模式也支持可撤销的操作。

 类图

  如上图所示:Command类是用来声明执行操作的接口;ConcreteCommand类,将一个接收者对象绑定于一个动作,调用接收者相应的操作,以实现Execute;Receiver类,知道如何实施与执行一个与请求相关的操作,任何类都可能作为一个接收者;Invoker类,要求该命令执行这个命令。

命令模式实现:

 

/**
 *声明执行者接口
 */
public abstract class Command {

    public abstract void excute();
    
    //public abstract void undo(); 撤销命令
}


/**
 *执行请求者相关的操作,任何类都可以作为一个接受者
 */
public class Receiver {

    public void action() {
        System.out.println("执行请求..........");
    }
}


/**
 *将一个接收者对象绑定于一个动作,调用接收者相应的操作
 */
public class ConcreateCommand extends Command {

    //绑定一个接受者对象
    Receiver receiver;
    
    public ConcreateCommand(Receiver receiver) {
        this.receiver=receiver;
    }
    
    @Override
    public void excute() {
        receiver.action();
    }

}


/**
 * 设置命令,执行这个命令
 *
 */
public class Invoker {

    /**设置具体的命令,可以是一组命令,然后执行命令**/
    Command command;
    
    public void setCommand(Command command) {
        this.command=command;
    }
    
    public void executeCommand() {
        command.excute();
    }
}


public class CommandPatternTest {

    public static void main(String[] args) {
        
        //一个接受者
        Receiver receiver =new Receiver();
        
        Command command =new ConcreateCommand(receiver);
        
        Invoker i=new Invoker();
        
        //设置命令
        i.setCommand(command);
        //执行命令
        i.executeCommand();
    }
    
}

 

posted on 2015-05-22 15:53  一天做一件小事  阅读(344)  评论(0编辑  收藏  举报