それで、私は今日、コンピュータサイエンスコースの紹介で試験を受けました。質問の1つは、デコレータのデザインパターンに関するもので、問題が発生しました。私の質問は、正解が何であるかではなく、これがデコレータパターンを使用するための良い例でさえあるかどうかです。Populationクラスで個人のBMIを直接計算するのと同じくらい簡単で、必要なクラスが少ないのに、なぜ個人の階層を装飾するのでしょうか。BMIはPersonオブジェクト状態の派生プロパティであるため、この場合、デコレータは実際に機能を追加しますか?
質問:
interface Person(){
double getWeightInKG();
double getHeightInMeters();
}
上記の人物インターフェースを前提として、デコレータパターンを使用して、以下に定義されているPopulationクラスを実装します。BMIは、式BMI = weight(Kg)/ height(meters)^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();