晚上。对于某些深度组合的情况,我很难找到合适的设计模式。让我举一个例子。
假设我们有一个 Corporation 类型的类,它有许多 Subsidiary 类型的类,它有许多 Department 类型的类,这些类在类型中包含许多 Unit 类型的类,而 Unit 类型又包含许多 Employee 类型的类。
现在,假设用例是计算每个公司的员工人数。我可以遍历每个公司,为每个子公司再次循环,依此类推,这样会导致嵌套循环,深度为 4 级。另外,如果我在下面几个级别引用我的职业链,我会违反得墨忒耳法则,这会在我修改我的链条的那一刻被打破。
我可以做的另一件事是添加大量的快捷方式引用(好吧也许不是很多,但有一些)。例如,一家公司本身也可以包含一个员工列表,从而无需遍历整个链条来计算他们。这样一来,类的耦合度就降低了(但它们是吗?),现在的问题变成了如何使 Corporation 和 Unit 的 Employee 列表保持同步。我想我可以使用观察者模式来让它们保持更新,但我真的觉得这个想法有什么可怕的错误,或者至少,我并没有真正使用那里最好的解决方案。
因为我很确定这是一个非常常见的领域,有谁能给我指出一个合适的设计模式吗?
谢谢。