命令模式(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("執行請求!");
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容