Kanade Logoカナデ Kanade

9. コマンドパターン (Command)

要求自体をオブジェクトとしてカプセル化して伝達し実行するコマンドパターンについて学びましょう。

コマンドパターン (Command Pattern)

テレビのリモコンの1番ボタンは「つける」、2番ボタンは「消す」に設定できますよね?リモコンはそのボタンが何の機能をするのか分からなくても押すだけで良いです。このようにすべきこと(命令)をカプセル化してオブジェクトにし、後で実行できるようにするのがコマンドパターンですね。

(参考:全ての命令は「実行」できなければなりません)
【命令】を規定しよう:
    〈実行〉がなければならない()

【電灯】を設計しよう:
    〈つける〉を作ろう():
        「部屋に明かりがつきました!明るい!」を出力しよう
        
    〈消す〉を作ろう():
        「部屋の明かりが消えました。暗い...」を出力しよう

(参考:電灯をつける事自体をオブジェクトとして包みました)
【命令】に従う【明かりをつける命令】を設計しよう:
    『電灯』を【電灯】の空っぽに隠そう
    
    最初に作られる時(【電灯】の『電灯』)次のようにしよう:
        『私』の『電灯』を『電灯』にしよう
        
    〈実行〉を作ろう():
        『私』の『電灯』の〈つける〉()を実行しよう

(参考:リモコンはどんな機器か分からなくてもただ命令を実行だけします)
【リモコン】を設計しよう:
    『ボタンたち』を【リスト】の【】に隠そう
    
    〈ボタンを追加する〉を作ろう(【命令】の『新しい命令』):
        『私』の『ボタンたち』の後ろに『新しい命令』を追加しよう
        
    〈ボタンを押す〉を作ろう(【数字】の『番号』):
        『命令』を【命令】の『私』の『ボタンたち』の『番号』番目にしよう
        『命令』の〈実行〉()を実行しよう

『居間の明かり』を【電灯】の新しい【電灯】()にしよう
『つけるボタン』を【命令】の新しい【明かりをつける命令】(『居間の明かり』)にしよう

『スマートリモコン』を【リモコン】の新しい【リモコン】()にしよう
『スマートリモコン』の〈ボタンを追加する〉(『つけるボタン』)を実行しよう
『スマートリモコン』の〈ボタンを押す〉(1)を実行しよう

プレイグラウンド (Playground)

ターミナル
コードを書いて「実行」ボタンを押してください。