Decorator

委譲をうまく使って動的に機能を拡張させることが出来るパターン。
通常、機能拡張には継承を使うが静的な拡張であり、拡張するごとに継承クラスを生成しなければならない。
そうすると複雑に絡み合った拡張を行いたい場合、継承クラスが大量に出来てしまい管理が困難となる。

Decoratorパターンはまず基本の機能を持つAPIとそれを実装したクラスを作る。
機能拡張用のクラスは内部に基本クラスを所持し、基本機能のAPIを使う場合は内部クラスに機能を委譲する。
拡張クラスが様々な拡張機能を提供する。
クラスを内部に所持しあうことで動的な継承を実現する。文章だと少々分かりにくいか。