Итак, я сдал экзамен сегодня в своем вступительном слове к курсу компьютерной науки. Один из вопросов касался шаблона дизайна Decorator, и это вызвало у меня некоторые проблемы. Мой вопрос заключается не в правильном ответе, а в том, действительно ли это хороший пример использования шаблона декоратора. Зачем украшать иерархию людей, когда это будет так же просто, и потребует меньше классов, чтобы класс населения рассчитал личностный ИМТ? Может ли декоратор действительно добавить функциональность в этом случае, поскольку BMI является производным свойством состояния объектов Person?Является ли это хорошим примером для шаблона проектирования Decorator?
Вопрос:
interface Person(){
double getWeightInKG();
double getHeightInMeters();
}
Учитывая человек интерфейс выше использования шаблона декоратора для реализации класса рассчитанному ниже. ИМТ рассчитывается по формуле 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();
Потому что «население» представляет собой коллекцию людей. Это не калькулятор ИМТ, и не должно быть. Я немного склонен к тому, что для большинства населения характерна функциональность, характерная для ИМТ, - скорее похоже на информацию, которую вы фильтруете * из * населения. –
@Dave, полностью согласен с тем, что функциональность BMI не должна быть в классе населения. –
Я был преподавателем Java, поэтому я понимаю сложность в создании простых заданий для игрушек, в которых используются шаблоны дизайна. DP просто не подходят для чего-либо слишком упрощенного. –