
you are here
217
6
章
Command
パターン
public interface Command {
public void execute();
public void undo();
}
ああ、もう少しで忘れるところでした。幸運にも、
基本的なコマンドクラスがあるので、アンドゥの追
加は簡単です。コマンドとリモコンにアンドゥを追
加していきましょう。
新たに追加した
undo()
メソッド。
何を行うの?
リモコンにアンドゥボタンをサポートする機能を追加する必要があります。アンドゥとは、最
後の動作を取り消す機能のことです。例えば、リビングの照明が消えていて、リモコンの
On
ボ
タンを押すともちろん照明が点きますが、アンドゥボタンを押すと照明が消えるのです。もっと
複雑な例に進む前に、アンドゥボタンが機能する照明を作ってみましょう。
1
アンドゥをサポートするには、
execute()
メソッドに似た
undo()
メソッドが必要です。
execute()
が最後にどんな動作をしたとしても、
undo()
はその動作を取り消します。そこ
で、コマンドにアンドゥを追加するには、その前に
Command
インタフェースに
undo()
メソッドを追加する必要があります。
本当に簡単でしたね。
次に、
Light
コマンドに
undo()
メソッドを実装してみましょう。
うまくできたね。素晴らしい設計がで
きたようだけど、顧客が求めていた小さ
なことを
1
つ忘れていない?
アンドゥボタンだよ!