【Unity】デザインパターン:Decoratorパターン

デコレーター(Decorator)とは? Decoratorパターンとは、既存のオブジェクトに対して、元の構造を変更せずに新しい機能を動的に追加するための デザインパターンです。 「装飾」という名前の由来 このパターンが「装飾」と呼ばれる理由は、まさにクリスマスツリーの装飾と同じ考え方だからです。 基本のツリー(元のオブジェクト)はそのままに、オーナメントやライト(機能)を自由に追加・取り外しできます。 元のオブジェクトを「装飾」するように、新しい振る舞いを重ね合わせていくのが特徴です。 継承との違い 従来の継承を使った機能拡張では、以下のような問題があります: 継承の問題点: クラスが増えすぎる(組み合わせ爆発) コンパイル時に機能が固定される 複数の機能を同時に適用するのが困難 Decoratorパターンの利点: 実行時に機能を追加・削除できる 複数のデコレータを自由に組み合わせ可能 既存コードの変更が不要 機能の組み合わせ順序も制御できる 基本構造 Decoratorパターンは以下の要素で構成されます: Component(コンポーネント): 機能を定義するインターフェース ConcreteComponent(具体コンポーネント): 基本機能を実装するクラス Decorator(デコレータ基底クラス): 装飾機能の基底となるクラス ConcreteDecorator(具体デコレータ): 実際の装飾機能を実装するクラス 使用する場面 以下のような状況でDecoratorパターンが有効です: 動的な機能追加が必要: 実行時に機能のON/OFFを切り替えたい 機能の組み合わせ: 複数の効果を重ね合わせたい(攻撃力UP + 防御力UP など) 既存コードの保護: 動作中のコードを変更せずに機能を拡張したい 設定による制御: 設定ファイルやユーザー選択により機能を変更したい
  • Unity
  • C#
  • デザインパターン