命令模式

来源:互联网 发布:linux tgz 安装 编辑:程序博客网 时间:2024/06/08 17:44

命令模式

将一个请求封装成一个对象,从而让用户使用不同的请求把客户端参数化;对请求排队或者记录请求日志,以及支持可撤销操作

命令模式的使用场景

需要抽象出待执行的动作,然后以参数的形式提供出来——类似于过程设计中的回调机制,而命令模式正式毁掉机制的一个面向对象的替代品。

在不同的时刻制定、排列和执行请求。一个命令对象可以有与初始请求无关的生存期。

需要支持取消操作。

支持修改日志功能,这样当系统崩溃时,这些修改可以被重做一遍。

需要支持事务操作。

UML图


代码:

Receiver.java

public class Receiver {    public void action(){        System.out.println("执行具体操作!");    }}

Command.java

public interface Command {    void execute();}

ConcreteCommand.java

public class ConcretCommand implements Command {    private Receiver receiver;    public ConcretCommand(Receiver receiver){        this.receiver=receiver;    }    @Override    public void execute(){        receiver.action();    }}

Invoker.java

public class Invoker {    private Command command;    public  Invoker(Command command){        this.command=command;    }    public void action(){        command.execute();    }}

Client.java

public class Client {    public static void main(String[] args){        Receiver receiver=new Receiver();        Command command=new ConcretCommand(receiver);        Invoker invoker=new Invoker(command);        invoker.action();    }}

运行结果:


0 0
原创粉丝点击