GRASP - модель информационного эксперта - подход
Я ищу подход лучшей практики в следующем случае. У меня есть три класса Java: ManualComponent
, AutomaticComponent
а также CustomComponent
, расширяющие абстрактный класс CalculationComponent
и реализовать следующее CalculableComponent
интерфейс:
public interface CalculableComponent {
void calculate();
}
Есть еще один класс, который объединяет эти CalculationComponent
в ComponentBox
:
public class ComponentBox {
private Set<CalculationComponent> components;
public void calculateAll() {
for (CalculationComponent c : components) {
c.calculate();
}
}
}
Everythig работал отлично, пока меня не попросили изменить реализацию calculate()
метод в CustomComponent
, В настоящее время этот метод нуждается в информации из других уже рассчитанных CalculationComponents
(= информация от Set<CalculationComponent> components
находится в ComponentBox
как это calculate(components);
).
Мое понимание GRASP заключается в том, что ComponentBox
класс теперь информационный эксперт, потому что теперь он содержит всю информацию, необходимую для окончательного расчета (calculateAll();
).
Как я должен изменить свои классы, чтобы получить наилучший подход?
Спасибо за помощь! М.