Decorator Pattern
デコレーターパターンはクラスを変更せずにオブジェクトへ動的に責務を追加する。ラッパーの連鎖で振る舞いを積み重ね、継承による拡張の代替手段となる。
目的
実行時に機能を動的に重ね、継承よりも柔軟にオブジェクトを拡張する。
メカニズム
デコレーターは対象と同じインターフェースを実装し、対象への参照を持ち、処理を委譲する前後に振る舞いを追加する。複数のデコレーターがラップの連鎖を構成する。Java の InputStream 系と Python の @decorator が典型的な例である。
ユースケース
- 機能のレイヤー化
- I/O ストリームの装飾
- クロスカッティング関心事