コンテンツへスキップ
uencoder

Decorator Pattern

デコレーターパターンはクラスを変更せずにオブジェクトへ動的に責務を追加する。ラッパーの連鎖で振る舞いを積み重ね、継承による拡張の代替手段となる。

目的

実行時に機能を動的に重ね、継承よりも柔軟にオブジェクトを拡張する。

メカニズム

デコレーターは対象と同じインターフェースを実装し、対象への参照を持ち、処理を委譲する前後に振る舞いを追加する。複数のデコレーターがラップの連鎖を構成する。Java の InputStream 系と Python の @decorator が典型的な例である。

ユースケース

  • 機能のレイヤー化
  • I/O ストリームの装飾
  • クロスカッティング関心事

関連用語

References