所以我今天参加了计算机科学入门课程的考试。其中一个问题是关于装饰器设计模式的,它给我带来了一些麻烦。我的问题不是关于正确答案是什么,而是这是否是一个使用装饰器模式的好例子。为什么要装饰人员层次结构,因为它同样容易并且需要更少的类来让 Population 类直接计算人员的 BMI?既然 BMI 是 Person 对象状态的派生属性,那么装饰器是否真的会在这种情况下添加功能?
问题:
interface Person(){
double getWeightInKG();
double getHeightInMeters();
}
鉴于上面的人员接口,使用装饰器模式来实现下面定义的 Population 类。BMI 的计算公式为 BMI = 体重(公斤)/身高(米)^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();