复合模式实现

Jac*_*lch 1 java design-patterns composite

我正在编写一个涉及复合模式的代码,并希望得到一些澄清.我有超级经理,主要经理和普通经理,他们处于下降层次,超级经理位于顶层.

我希望超级经理能够给总经理一些钱,主经理能够给普通经理一些钱.我遇到的问题是我不希望主经理能够给超级经理一些钱,我不想用它instanceof来确保,因为它违背了复合模式的目的.

我的主管理器和普通管理器扩展了一个名为gradeManagers的抽象类,而我的超级管理器有一个数组列表,可以添加类型为gradeManagers的组件.

Ted*_*opp 5

听起来您的层次结构非常适合复合模式.Composite模式旨在允许以与单个对象相同的方式处理对象集合.(想想零件用螺栓固定在一起.有时你想把一个子组件想象成一个可以与其他零件/子组件螺栓连接在一起的零件.子组件是复合材料.)如果我明白你是什么尝试这样做时,您没有要将其视为另一个Manager的Manager对象集合.

然而,无论你是否使用Composite,我建议添加一个属性(让我们称之为depth),随着你在层次结构中的下降而增加.然后,您可以使用它来实现您的业务规则:经理只能向另一个具有相同或更高深度的经理提供资金.这允许您以避免任何对象类概念的方式进行编码.