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();).

Как я должен изменить свои классы, чтобы получить наилучший подход?

Спасибо за помощь! М.

0 ответов

Другие вопросы по тегам