既存のコードをあまり変更する必要がない、ゲーム用の簡単に拡張できるアイテムシステムを設計したいと思います。その場で新しい効果のあるアイテムを追加したい。
私のアイテムに共通する特徴:
名前、説明、NPC販売価格、装備できる場合、必要なレベル、戦闘で使用できる場合、戦闘外で使用できる場合、クールダウン
だから私はこれをすでにクラスにカプセル化することができます。しかし、今ではアイテム効果があります。
例:回復xヘルスポイント、回復xマナポイント、デバフxの削除、バフxの追加、装備時にxステータスポイントを与える、装備時にx%の確率で他の効果を作成するなど。
そして、それらは次のように組み合わせることができます:ヒールxヘルスとマナポイント。最初の4つは使用可能なアイテムが持つことができる効果の例であり、最後の2つは装備可能なアイテムが持つことができる効果の例です。
その背後にある考え方は、データベースにもこの構造があり、データベースに新しい効果の組み合わせで新しいアイテムを追加できることです。コードはこれを読み取り、新しいファンシーアイテムにまとめます。多くを変更します。コードを変更する必要があるのは、明らかに新しいエフェクトを追加するときだけです。
これをどのようにデザインパターンにまとめますか?
デコレータを考えました。これには別のより良いデザインパターンがありますか、それとも複数のデザインパターンの組み合わせがありますか?