私は、構成可能なスキルを持つ忍者がいます。設定可能とは、プログラムが設定ファイルを読み込んで実行時に追加することです。すなわち:問題別のデザインに関する質問
Ninja:
color: Red
Skills:
- High Jump
- Invisibility
これらのスキルは、Ninjaクラスに機能を動的に追加する必要があると仮定します。同様に、NinjaにHigh Jumpスキルを設定する場合、クラスはCanHighJumpインターフェイスに従い、メソッドとしてpublic void highJump()を実行する必要があります。
これについては、私が考えることができる2つの方法があります。私の最初の反応は、StringカラーのNinjaクラスを使用し、Reflectionを使用して機能を追加することです。しかし、今では、リレーショナルデータベースを使っても実現できることが分かりました。文字列カラーの忍者クラスをお持ちで、忍者とスキルとの関連のあるオブジェクトを忘れてください。スキルをチェックする必要がある場合は、クラスが使用できるスキルを取得するデータベースを呼び出してください。それらは私が思いつくことができる唯一の2つの真のダイナミックな解決策であり、私はそれぞれのデザインの長所/短所を理解することはできません。私は、データベースソリューションがはるかに拡張可能であると感じていますが、コーディングの際にリフレクション方式が私にとって最も理にかなっています。 Ninjaが持っているスキルを照会する必要はありません。インターフェースを簡単に確認できるからです。
私は誰かが私にこの問題の標準的な設計ソリューションについての洞察力を与えることができると願っています。それが私が思いついた2つのうちの1つであろうと、私が考えなかったものであろうと。
ええ、これは、プロパティパターンがどんなものかを特定しているようです。ちょっと問題に特化しています。コードを書く時間をとってくれてありがとう。私はこれをやり終えるだろう。私は前にHasSkills - > CanAddSkills関係について考えなかった。それは非常に柔軟です。 – Phil