コマンドデザインパターン2
コマンド設計パターンの実現テストします
シナリオ
家電リモコンを例にコマンドを割り当てる方法をみていきましょう
クラス図

RemoteLoaderコード
リモコンのスロットにロードされる多数のコマンドオブジェクトを作成します
コマンドオブジェクトは、ホームオートメーションデバイスのリクエストをカプセル化します
コマンドインターフェイスのコード
全てのRemoteControlコマンドはICommandインターフェースを実装しています
このインターフェースはExecute()というメソッドを1つだけ持ちます
コマンドは、特定のベンダークラスの一連のアクションをカプセル化します
リモコンは、Execute()メソッドを呼び出してアクションを起動します
Lightコード
ベンダークラスを使って、デバイスを制御する実際のホームオートメーション処理を実行します
ここでは例として、Lightクラスを使用しています
LightのCommandのコード
ICommandインターフェースを利用して、リモコンのボタンを押すと起動できるアクションを簡単なコマンドオブジェクトで実装します
コマンドオブジェクトはベンダークラスのインスタンスであるオブジェクトへの参照を保持し、そのオブジェクトの1つ以上のメソッドを呼び出すExecute()メソッドを実装します
ここでは照明のOnとOffを行う2つのクラスを表しています
LightOnCommandコード
LightOffCommandコード
結果
—– リモコン —–
[スロット0] LightOnCommand LightOffCommand
[スロット1] LightOnCommand LightOffCommand
[スロット2] CeilingFanOnCommand CeilingFanOffCommand
[スロット3] StereoOnWithCDCommand StereoOffWithCDCommand
[スロット4] NoCommand NoCommand
[スロット5] NoCommand NoCommand
[スロット6] NoCommand NoCommand
リビングルーム照明を点けました
リビングルーム照明を消しました
キッチン照明を点けました
キッチン照明を消しました
リビングルームシーリングファンをOnにしました
シーリングファンをOnにしました
ステレオをOnにました
CDをセットました
ボリュームを22にしました
ステレオをOffにました
ディスカッション
コメント一覧
まだ、コメントがありません