Decorator
Decoratorとは、オブジェクト指向プログラミングにおいて提案された23種類の公式、デザインパターンの1つです。このデザインパターンはオブジェクトの構造に関わるパターンです。
このDecoratorパターンは、一言でまとめると様々なオブジェクトで、一つのオブジェクトを重ね着させ、着飾るようなというパターンです。Decoratorという言葉が意味するとおりの装飾者の役割です。例えるならば、人が衣装やアクセサリーを重ね着して着飾っていくようなイメージです。
Decoratorパターンでは、上記の例で挙げられた、「人」と「装飾物」を同一視してクラス設計することで実現します。Decoratorクラスでは、「自身を表示するメソッド」のみを用意します。その派生系である子クラスでは、人を表示するクラスと装飾物を表示するクラスそれぞれを設計します。装飾物を表示するクラスは、インスタンス変数として、Decoratorクラスを持ちます。
重要なことは「自身を表示するメソッド」において、以下のことを行うことです。
・自分自身を表示します(服なら服、帽子なら帽子を表示)
・自分の持つインスタンス変数の「自身を表示するメソッド」を実行します。
これにより連鎖的に表示されることになります。
人が服と帽子をかぶっている光景を表示する場合、装飾品である服は、「自身を表示するメソッド」を用いることで、服自身を表示しつつ、他の装飾品である帽子の「自身を表示するメソッド」を起動します。それにより、帽子が表示され、また帽子も同メソッドを起動し、最後に人が自身の同メソッドを起動し、表示が完了します。細かい点ですが、人は装飾品ではないので、他のオブジェクトを表示する機能は持ちません。
このように連鎖的な処理を行い、重ね着するように処理を行うのがDecoratorパターンです。