Decorator パターン - デコレータパターン
2008/06/27 21:43Update
Decorator パターンはGoFによる23種類のデザインパターンの構造に関連するパターンです。Decorator パターンでは、機能を追加する際、元のクラスを直接修正せず、その機能を引き継いだ「Decorator(装飾者)」役のクラスを追加することによって、より柔軟な拡張方法を提供します。
Decoratorパターン 概要
Decoratorは「装飾者」という意味で、Decoratorパターンは既存の機能の上に、装飾という手法で機能を追加していく柔軟な拡張方法を提供します。
例:
不動産屋は「モデルルーム」+αで物件を違う価格で売り出すことがありますようね。
この「α」は「モデルルーム」より新しい機能「装飾」であり、顧客の好みで付くか付かないかを決定します。
もちろん、「モデルルーム」+αにしても、売れるルームです。
また、
同じモデルの車は、顧客の好みで、色を違ったりすることがあります。
車の色は「モデルの車」に装飾された色です。
色が違っていても、車です。
Decoratorパターン の使用シーン
◇ クラス本来の目的以外の機能があった場合
◇ クラスを追加するのに、元のクラスを修正せず、または既存の機能に影響を与えたくない場合。
Decoratorパターン のクラス図
<<クラス図>>
Component:
機能提供クラス。
ConcreteComponent:
Componentの具体的な実装クラス。
Decorator:
装飾クラス(抽象)。Componentから継承。即ち、元のクラスと同様のインタフェースを持つこと。
ConcreteDecoratorA と ConcreteDecorator
Decoratorから継承。Decoratorの具体的なクラス実装。
以下はDecoratorクラスよくある実装例です。
public class Decorator implement Component {
Component component;
public Decorator(Component component) {
this.component = component;
}
public void doSomething() {
...
this.component.doSomething();
...
}
}
次のページ:Decoratorパターン の使用例
Sponsored Link
- Relative Articles
- ASP.NETでのフロント・コントローラ(Front Controller)実装 - (2009/10/20 15:22)
- Factory Method パターン - ファクトリメソッドパターン - (2008/06/09 22:44)
- Abstract Factory パターン - 抽象ファクトリパターン - (2008/06/10 13:25)
- Singleton パターン - シングルトンパターン - (2008/06/10 15:36)
- Prototypeパターン - プロトタイプパターン - (2008/06/10 17:23)
- Builderパターン - ビルダーパターン - (2008/06/10 19:01)
- Adapter パターン - アダプターパターン - (2008/06/11 11:30)
- Composite パターン - コンポジットパターン - (2008/06/11 16:59)
- Interpreter パターン - インタプリタパターン - (2008/06/13 15:42)
- Chain of Responsibility パターン - 責任の連鎖パターン - (2008/06/14 00:28)