Java设计模式----命令模式

2018-07-06  本文已影响19人  GaaraZ

介绍

将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。也称之为:动作(Action)模式、事物(transaction)模式

结构

package command;

public class Receiver {
    public void action(){
        System.out.println("Receiver.action()");
    }
}
package command;

public interface Command {
    // 实际项目中,可以根据需求设计多个不同的方法
    void execute();
}


class ConcreteCommand implements Command{
    private Receiver receiver;      // 命令正真的执行者

    public ConcreteCommand(Receiver receiver) {
        this.receiver = receiver;
    }

    public void execute() {
        // 可以在命令正真执行前后,执行相关处理
        receiver.action();
    }
}
package command;

public class Invoker {
    private Command command;    //也可以通过容器List<Command>容纳多个命令对象,进行批处理

    public Invoker(Command command) {
        this.command = command;
    }

    // 业务方法,用于调用命令类的方法
    public void call(){
        command.execute();
    }
}
package command;

public class Client {
    public static void main(String[] args) {
        Command command = new ConcreteCommand(new Receiver());

        Invoker invoker = new Invoker(command);

        invoker.call();
    }
}

开发中常见的场景

优点

上一篇 下一篇

猜你喜欢

热点阅读