Tbpgr Blog

Recruiting Operations tbpgr(てぃーびー) のブログ

書籍 Refactoring to Patterns | Simplification | Move Embellishment to Decorator

パンくず

書籍 Patterns to Patterns
Simplification
Move Embellishment to Decorator

概要

Move Embellishment to Decoratorのリファクタリングについて

使用する場面

核となる機能に飾るような機能を追加する場合、
既存のクラスに特定のケースのみ動作する機能を追加することになる。

対応方法

飾りをDecoratorにする

利点と欠点

利点

・クラスから飾りを分離することでシンプルにします
・クラスの主処理と飾りの責務を効果的に区別する
・幾つものクラスに関わる重複した飾りのロジックを削除する

欠点

・オブジェクトが飾りのオブジェクトに変わる
・コードの理解とデバッグが難しくなる
・Decoratorを組み合わせたとき、設計が複雑になる

サンプル

GoFのDecorator参照