命令模式(Command)

命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。

主方法

public class main {
    public static void main(String[] args) {
        Receiver r = new Receiver();
        Command c = new CommandImpl(r);
        Invoker i = new Invoker();
        i.setCommand(c);
        i.executeCommand();
    }
}

抽象类

/**
 * 用来声明操作的接口
 */
public abstract class Command {
    protected Receiver receiver;
    public Command(Receiver receiver) {
        this.receiver = receiver;
    }

    abstract public void execute();
}

实现类

/**
 * 讲一个接受者对象绑定一个动作,调用接受者相应操作,以实现execute
 */
public class CommandImpl extends Command {
    public CommandImpl(Receiver receiver) {
        super(receiver);
    }

    public void execute() {
        receiver.action();
    }
}

执行命令的类,Invoker相当于管理请求的类,将请求排队或者记录请求日志,撤销等

/**
 * 要求该命令执行这个请求
 */
public class Invoker {
    private Command command;

    public void setCommand(Command command) {
        this.command = command;
    }

    public void executeCommand() {
        command.execute();
    }
}

执行操作的类

/**
 * 知道如何实施与执行一个与请求相关的操作,任何类都可能作为一个接受者
 */
public class Receiver {
    public void action() {
        System.out.println("执行请求!");
    }
}

你可能感兴趣的:(命令模式(Command))