コマンドパターン


オブジェクトとして要求をカプセル化します.これにより、異なるリクエスト、キュー、ログリクエストを持つクライアントをパラメータ化し、undo操作をサポートします.

参加者

  • コマンド:操作
  • を実行するためのインターフェースを宣言する
  • ConcreteCommand :受信オブジェクトとアクションのバインドを定義します.受信機
  • の対応する操作を起動することによって実行を実行します
  • クライアント:ConcreteMommandオブジェクトを作成して、そのレシーバ
  • をセットします
  • Invooker :要求を実行するためにコマンドに尋ねる
  • レシーバー:要求を実行することに関連する操作を実行する方法を知っています.
  • コード


    public class Main {
    
        public static void main(String[] args) {
            Receiver receiver = new Receiver();
            Command command = new ConcreteCommand(receiver);
            Invoker invoker = new Invoker();
            invoker.setCommand(command);
            invoker.executeCommand();
        }
    }
    
    public abstract class Command {
    
        protected Receiver receiver;
    
        public Command(Receiver receiver) {
            this.receiver = receiver;
        }
    
        public abstract void execute();
    }
    
    public class ConcreteCommand extends Command {
    
        public ConcreteCommand(Receiver receiver) {
            super(receiver);
        }
    
        @Override
        public void execute() {
            receiver.action();
        }
    }
    
    public class Receiver {
    
        public void action() {
            System.out.println("Called Receiver.action()");
        }
    }
    
    public class Invoker {
    
        private Command command;
    
        public void setCommand(Command command) {
            this.command = command;
        }
    
        public void executeCommand() {
            command.execute();
        }
    }
    

    出力


    Called Receiver.action()
    

    エディエルジュリアン61 / デザインパターン