1700468778
1700468779
//构造函数是必须的
1700468780
1700468781
public Branch(String_name,String_position,int_salary){
1700468782
1700468783
super(_name,_position,_salary);
1700468784
1700468785
}
1700468786
1700468787
//增加一个下属,可能是小头目,也可能是个小兵
1700468788
1700468789
public void addSubordinate(Corp corp){
1700468790
1700468791
corp.setParent(this);//设置父节点
1700468792
1700468793
this.subordinateList.add(corp);
1700468794
1700468795
}
1700468796
1700468797
//我有哪些下属
1700468798
1700468799
public ArrayList<Corp>getSubordinate(){
1700468800
1700468801
return this.subordinateList;
1700468802
1700468803
}
1700468804
1700468805
}
1700468806
1700468807
增加了粗体部分。看懂程序了吗?甭管是树枝节点还是树叶节点,在每个节点都增加了一个属性:父节点对象,这样在树枝节点增加子节点或叶子节点是设置父节点,然后你看整棵树除了根节点外每个节点都有一个父节点,剩下的事情还不好处理吗?每个节点上都有父节点了,你要往上找,那就找呗!大家自己考虑一下,写个find方法,然后一步一步往上找,非常简单的方法,这里就不再赘述。
1700468808
1700468809
有了这个parent属性,什么后序遍历(从下往上找)、中序遍历(从中间某个环节往上或往下遍历)都解决了,这个就不多说了。
1700468810
1700468811
再提一个问题,树叶节点和树枝节点是有顺序的,你不能乱排,怎么办?比如我们上面的例子,研发一组下边有3个成员,这3个成员要进行排序(在机关里这叫做排位,同样是同事也有个先后升迁顺序),你怎么处理?问我呀,问你呢,好好想想,以后用得着的!
1700468812
1700468813
1700468814
1700468815
1700468817
设计模式之禅 21.5 最佳实践
1700468818
1700468819
组合模式在项目中到处都有,比如现在的页面结构一般都是上下结构,上面放系统的Logo,下边分为两部分:左边是导航菜单,右边是展示区,左边的导航菜单一般都是树形的结构,比较清晰,有非常多的JavaScript源码实现了类似的树形菜单,大家可以到网上搜索一下。
1700468820
1700468821
还有,大家常用的XML结构也是一个树形结构,根节点、元素节点、值元素这些都与我们的组合模式相匹配,之所以本章节不以XML为例子讲解,是因为很少有人还直接读写XML文件,一般都是用JDOM或者DOM4J了。
1700468822
1700468823
还有一个非常重要的例子:我们自己本身也是一个树状结构的一个树枝或树叶。根据我能够找到我的父母,根据父亲又能找到爷爷奶奶,根据母亲能够找到外公外婆等,很典型的树形结构,而且还很规范(这个要是不规范那肯定乱套了)。
1700468824
1700468825
1700468826
1700468827
[
上一页 ]
[ :1.700468778e+09 ]
[
下一页 ]