Toshio Blog

Decorator Pattern

April 01, 2018

Decorator Patternについて調べたことについてのメモです。

キーワード

  • 継承の代替手段
  • 既存のオブジェクトに新しい機能や振る舞いを動的に追加することを可能にする。
  • 継承は静的に機能が決まってしまうが、このパターンは動的に責任を追加することができる。単一責任の原則(Single Responsibility Principle)に当てはめやすい。
  • 柔軟な拡張引用

参考図書

  • デザインパターン入門

参考サイト

  • https://liginc.co.jp/web/programming/php/142575

    既存のオブジェクトに新しい機能や振る舞いを動的に追加することを可能にする。

  • http://d.hatena.ne.jp/shimooka/20141217/1418788239
    詳細な解説が記載。

    柔軟な拡張が可能
    既存クラスのメソッドに機能を追加する場合、サブクラスを作成し、既存クラスの機能追加したいメソッドをオーバーライドする事が一般的かもしれません。つまり継承です。しかし、追加したい「機能」のパターンが複数ある場合、また、追加したい「機能」は他のパターンを踏まえた上で実装されることがある場合、さらには追加するパターンに「順序」が存在する場合、そのパターンの組み合わせを考慮したクラス設計が必要になります。機能が静的に追加されている状態であり、必要なパターンの組み合わせの数分、サブクラスの作成が必要となります。

  • https://qiita.com/masakura/items/cbe49f20acfdc28927ae
    デコレーターパターンをサンプルコード、解説付きで説明。
    HTTPリクエストの処理にキャッシュの機能を付ける例で、デコレーターパターンを使用。


Written by Ta Toshio who lives and works in Saitama, Japan .You should follow him on Twitter