@634

Decorator パターン

Advertisement

クラスを拡張する

すでに存在するクラスに機能を追加する場合や、何かのフィルターを通す場合に使用する。Adapter パターンと似ているが、インタフェースを変更するのか機能を追加するのかという区別ができる。

サンプルコード

既存のクラス
class RectInfo{
    private int width;
    private int height;

    // 幅と高さを設定
    public RectInfo(int w, int h){
        width  = w;
        height = h;
    }

    // 幅を返す
    public int getWidth(){
        return width;
    }

    // 高さを返す
    public int getHeight(){
        return height;
    }
}

Decorator で機能を追加したプログラム
class DecoratorRect{
    RectInfo rInfo = new RectInfo();

    public DecoratorRect(int w, int h){
        super(w, h);
    }

    // 面積を返す
    public int getArea(){
        return width * height;
    }
}
Decorator は、開発者が意識することなく使用している事が多い。
実質的には継承と同じ機能を実現することになるが、Decorator の方が結合度が低い。

Advertisement

ショートカット

634
634ブログ
このカテゴリのトップページに戻る
Incubator(Pukiwiki)
634ラボ
   UIコレクションギャラリー
   ZO-3ジェネレーター

サイト検索


Y!ログール