今日私はコンピューターサイエンスコースへのイントロで試験を受けました。質問の1つがデコレータのデザインパターンにあり、それは私にいくつかの問題をもたらしました。私の質問は、正解が何であるかについてではなく、デコレータパターンをまったく使う良い例であるかどうかです。 PopulationクラスでPerson BMIを直接計算するのが簡単で、少数のクラスを必要とするのであれば、Person階層を飾るのはなぜですか? BMIはPersonオブジェクトの状態の派生プロパティなので、デコレータは実際にこの場合に機能を追加しますか?これはデコレータのデザインパターンの良いインスタンスですか?
質問:使用上の人物インタフェース以下に定義人口のクラスを実装するためのDecoratorパターンを考えると
interface Person(){
double getWeightInKG();
double getHeightInMeters();
}
。 BMIは、BMI =体重(Kg)/身長(メートル)^ 2の公式を使用して計算されます。これを実現するには、他のクラスやインタフェースを設計し実装する必要があります。 java.util.ArrayListを使用しているとします。
+ Population:
- public void addPerson(Person p);
- public void removePerson(Person p);
- public double getAverageBMI();
- public Person[ ] getPeopleInBMIRange(double bmi_min, bmi_max);
- public int populationSize();
「人口」は人の集合なので、それはBMIの計算機ではなく、そうでなければなりません。私は母集団の中でBMI特有の機能を最初からやっていることをちょっと心配しています。 –
@Daveは、BMI特有の機能が人口クラスに含まれるべきではないことに完全に同意しています。 –
私はJavaの先生でしたので、デザインパターンを使用する単純な、おもちゃのドメイン割り当てを作成することの難しさを理解しています。 DPは単に過度に単純化されたものには適していません。 –