カプセル化Commandパターンどうも。最近、蒙古タンメンにハマりすぎて困っています。麻婆麺が辛すぎて病みつきになります。Commandパターンを見ていきます。Commandパターンの定義リクエスト(命令)をオブジェクトとしてカプセル化し、その結果、他のオブジェクトを異なるリクエスト、キューまたはログリクエストなどでパラメータ化でき、アンドゥ可能な操作もサポートする。リクエストをオブジェクトでカプセル化する。クライアントはいろんなリクエストを持つことができる。・Command...全てのコマンド(オブジェクト)のためのインターフェースを定義する。・ConcreteCommand...Receiverとaction()の結びつきを(execute()に)定義する。Invokerがexecute()することでConcreteCommandへリクエストを行い、ConcreteCommandがReceiverの1つ以上のaction()を呼び出すことでそれを実行する。・Invoker...コマンド(オブジェクト)を保持し、ある時点でのコマンドのexecute()を呼び出すことでコマンド(オブジェクト)にリクエストを実行するよう依頼する。具体的なコマンド(オブジェクト)の内容は知らない。(Commandインターフェースを実装している何かだと知っている程度)・Receiver...制御されるもの(制御対象)・Client具体的に...この章でのは「複数の電化製品のon/offを制御できるリモコン」でした。複数の制御対象をセットできる。[Client]いいところInvoker(RemoteControl)自体が制御するReceiver(Light)を知っている場合、Receiverが増えるたびに、if文で追記する形になってしまう。Commandパターンを使うと...↓Invoker(RemoteControl)は具体的なコマンドオブジェクトの内容を知らずして(インターフェスは知ってる)、コマンドオブジェクトに具体的な処理(制御)を依頼できるので、Invoker(RemoteControl)とReceiver(Light)を分離することができる。各々の役割分担ができる。RemoteControl.php※Receiver(LightやDoorなど)について全く出てこない。