オブジェクト指向設計


Decorator パターン - デコレータパターン

2008/06/27 21:43Update
TAGS: Decoratorパターン | GoF | デザインパターン | OOD | オブジェクト指向設計

Decorator パターンはGoFによる23種類のデザインパターンの構造に関連するパターンです。Decorator パターンでは、機能を追加する際、元のクラスを直接修正せず、その機能を引き継いだ「Decorator(装飾者)」役のクラスを追加することによって、より柔軟な拡張方法を提供します。

Page:  <1|2>

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パターン の使用例
Page:  <1|2>

有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


Comments