Client.java
上传用户:hensond
上传日期:2021-12-27
资源大小:817k
文件大小:3k
源码类别:

软件工程

开发平台:

Java

  1. package com.company.section1;
  2. import java.util.ArrayList;
  3. /**
  4.  * @author cbf4Life cbf4life@126.com
  5.  * I'm glad to share my knowledge with you all.
  6.  * Client的作用是组装这棵树,并遍历一遍
  7.  */
  8. @SuppressWarnings("all")
  9. public class Client {
  10. public static void main(String[] args) {
  11. //首先产生了一个跟节点
  12. IRoot ceo = new Root("王大麻子","总经理",100000);
  13. //产生三个部门经理,也就是树枝节点
  14. IBranch developDep = new Branch("刘大瘸子","研发部门经理",10000);
  15. IBranch salesDep = new Branch("马二拐子","销售部门经理",20000);
  16. IBranch financeDep = new Branch("赵三驼子","财务部经理",30000);
  17. //再把三个小组长产生出来
  18. IBranch firstDevGroup = new Branch("杨三乜斜","开发一组组长",5000);
  19. IBranch secondDevGroup = new Branch("吴大棒槌","开发二组组长",6000);
  20. //剩下的及时我们这些小兵了,就是路人甲,路人乙
  21. ILeaf a = new Leaf("a","开发人员",2000);
  22. ILeaf b = new Leaf("b","开发人员",2000);
  23. ILeaf c = new Leaf("c","开发人员",2000);
  24. ILeaf d = new Leaf("d","开发人员",2000);
  25. ILeaf e = new Leaf("e","开发人员",2000);
  26. ILeaf f = new Leaf("f","开发人员",2000);
  27. ILeaf g = new Leaf("g","开发人员",2000);
  28. ILeaf h = new Leaf("h","销售人员",5000);
  29. ILeaf i = new Leaf("i","销售人员",4000);
  30. ILeaf j = new Leaf("j","财务人员",5000);
  31. ILeaf k = new Leaf("k","CEO秘书",8000);
  32. ILeaf zhengLaoLiu = new Leaf("郑老六","研发部副总",20000);
  33. //该产生的人都产生出来了,然后我们怎么组装这棵树
  34. //首先是定义总经理下有三个部门经理
  35. ceo.add(developDep);
  36. ceo.add(salesDep);
  37. ceo.add(financeDep);
  38. //总经理下还有一个秘书
  39. ceo.add(k);
  40. //定义研发部门 下的结构
  41. developDep.add(firstDevGroup);
  42. developDep.add(secondDevGroup);
  43. //研发部经理下还有一个副总
  44. developDep.add(zhengLaoLiu);
  45. //看看开发两个开发小组下有什么
  46. firstDevGroup.add(a);
  47. firstDevGroup.add(b);
  48. firstDevGroup.add(c);
  49. secondDevGroup.add(d);
  50. secondDevGroup.add(e);
  51. secondDevGroup.add(f);
  52. //再看销售部下的人员情况
  53. salesDep.add(h);
  54. salesDep.add(i);
  55. //最后一个财务
  56. financeDep.add(j);
  57. //树状结构写完毕,然后我们打印出来
  58. System.out.println(ceo.getInfo());
  59. //打印出来整个树形
  60. getAllSubordinateInfo(ceo.getSubordinateInfo());
  61. }
  62. //遍历所有的树枝节点,打印出信息
  63. private static String getAllSubordinateInfo(ArrayList subordinateList){
  64. int length = subordinateList.size();
  65. for(int m=0;m<length;m++){  //定义一个ArrayList长度,不要在for循环中每次计算
  66. Object s = subordinateList.get(m);
  67. if(s instanceof Leaf){  //是个叶子节点,也就是员工
  68. ILeaf employee = (ILeaf)s;
  69. System.out.println(((Leaf) s).getInfo());
  70. }else{
  71. IBranch branch = (IBranch)s;
  72. System.out.println(branch.getInfo());
  73. //再递归调用
  74. getAllSubordinateInfo(branch.getSubordinateInfo());
  75. }
  76. }
  77. return null;
  78. }
  79. }