我正在编写涉及复合模式的代码,希望得到一些说明。我有 super 经理、主要经理和普通经理,他们处于降序层次结构中, super 经理在顶部。
我希望 super 经理能够给主要经理一些钱,而主要经理能够给普通经理一些钱。我遇到的问题是我不希望 Main Manager 能够给 Super Manager 一些钱并且我不想使用 instanceof
来确保这一点,因为它违背了 Composite 模式的目的。
我的主管理器和普通管理器扩展了一个名为 gradeManagers 的抽象类,而我的 super 管理器有一个数组列表,可以添加 gradeManagers 类型的组件。
最佳答案
听起来您的层次结构不太适合复合模式。 Composite 模式旨在允许以与单个对象相同的方式处理对象集合。 (想想用 bolt 连接在一起的零件。有时您想将子组件视为可以与其他零件/子组件用 bolt 连接在一起的单个零件。子组件是复合 Material 。)如果我明白你是什么尝试这样做时,您没有要将其视为另一个管理器的管理器对象集合。
尽管如此,无论您是否为此使用 Composite,我都建议添加一个属性(我们称它为 depth
),该属性会随着层次结构的向下而增加。然后您可以使用它来实现您的业务规则:一个经理只能给另一个同等或更高深度的经理钱。这允许您以一种避免任何对象类概念的方式进行编码。
关于java - 复合模式实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8774277/