在以下情况中,我正在寻找最佳实践方法。我有三个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
的{{1}}的信息,如ComponentBox
}。
我对GRASP的理解是calculate(components);
类现在是信息专家,因为现在它包含了进行最终计算所需的所有信息(ComponentBox
)。
我应该如何更改课程以获得最佳实践方法?
感谢您的帮助! 微米。