打字猴:1.700468193e+09
1700468193 //遍历整棵树,只要给我根节点,我就能遍历出所有的节点
1700468194
1700468195 public static String getTreeInfo(Branch root){
1700468196
1700468197 ArrayList<ICorp>subordinateList=root.getSubordinate();
1700468198
1700468199 String info=””;
1700468200
1700468201 for(ICorp s:subordinateList){
1700468202
1700468203 if(s instanceof Leaf){//是员工就直接获得信息
1700468204
1700468205 info=info+s.getInfo()+”\n”;
1700468206
1700468207 }else{//是个小头目
1700468208
1700468209 info=info+s.getInfo()+”\n”+getTreeInfo((Branch)s);
1700468210
1700468211 }
1700468212
1700468213 }
1700468214
1700468215 return info;
1700468216
1700468217 }
1700468218
1700468219 }
1700468220
1700468221 运行结果完全相同,不再赘述。通过这样构件,一个非常清晰的树状人员资源管理图出现了,那我们的程序是否还可以优化?可以!你看Leaf和Branch中都有getInfo信息,是不是可以抽象?好,我们抽象一下,如图21-5所示。
1700468222
1700468223
1700468224
1700468225
1700468226 图21-5 精简的类图
1700468227
1700468228 你一看这个图,乐了。能不乐嘛,减少很多工作量了,接口没有了,改成抽象类了,IBranch接口也没有了,直接把方法放到了实现类中了,太精简了!而且场景类只认定抽象类Corp就成,那我们首先来看抽象类ICorp,如代码清单21-14所示。
1700468229
1700468230 代码清单21-14 抽象公司职员类
1700468231
1700468232 public abstract class Corp{
1700468233
1700468234 //公司每个人都有名称
1700468235
1700468236 private String name=””;
1700468237
1700468238 //公司每个人都职位
1700468239
1700468240 private String position=””;
1700468241
1700468242 //公司每个人都有薪水
[ 上一页 ]  [ :1.700468193e+09 ]  [ 下一页 ]