創屋ぷれす

Decorator

Decoratorは,
GoFによるデザインパターンの1つです.

ある機能を拡張する際に使えるデザインパターンとなります.
機能を拡張する際,元のクラスの関数に手を入れたり,関数を増やしたりすることもあるかと思います.
Decoratorパターンでは,クラスを継承=Decorateすることにより,機能拡張を行います.
また,Decoratorでは,基本的にインターフェースは変更しない,という考えになっています.
(必要であれば行っても良い)

継承する目的としては,基底クラスのIFを再利用するためとなります.
(基底関数が存在する言語では制限・制限ができるので,思想としてマッチしています)
Decorateしていくクラスに関しては,
継承かつ継承元のクラスのオブジェクトを内部で保持する,という形となります.
先ほど記載したように,IFの再利用をしつつ,プロパティ(メンバ変数)も再利用するという形になります.
→ あくまでDecorate(装飾)なので,プロパティは保持しない,という考えです

Adapterとの差としては,
Adapterは機能は変えずに使いやすいようにIFを拡張していくもの,
DecoraterはIFは変えずに機能を拡張していくもの
という違いがあります.

Decorateパターンを使用すると,作りが疎になるので,見通しの良いまま機能拡張をすることができます.
機能拡張する際に1つのクラスに処理をゴリゴリ書いていって いつもごちゃごちゃするなあ,と感じている方にはオススメのパターンかと思います.

創屋のホームページはこちらから

Post navigation

Comments are closed.