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

软件工程

开发平台:

Java

  1. package com.company.section2;
  2. import java.util.ArrayList;
  3. /**
  4.  * @author cbf4Life cbf4life@126.com
  5.  * I'm glad to share my knowledge with you all.
  6.  * 组装这个树形结构,并展示出来
  7.  */
  8. @SuppressWarnings("all") 
  9. public class Client {
  10. public static void main(String[] args) {
  11. //首先是组装一个组织结构出来
  12. Branch ceo = compositeCorpTree();
  13. //首先把CEO的信息打印出来:
  14. System.out.println(ceo.getInfo());
  15. //然后是所有员工信息
  16. System.out.println(getTreeInfo(ceo));
  17. }
  18. //把整个树组装出来
  19. public static Branch compositeCorpTree(){
  20. //首先产生总经理CEO
  21. Branch root = new Branch("王大麻子","总经理",100000);
  22. //把三个部门经理产生出来
  23. Branch developDep = new Branch("刘大瘸子","研发部门经理",10000);
  24. Branch salesDep = new Branch("马二拐子","销售部门经理",20000);
  25. Branch financeDep = new Branch("赵三驼子","财务部经理",30000);
  26. //再把三个小组长产生出来
  27. Branch firstDevGroup = new Branch("杨三乜斜","开发一组组长",5000);
  28. Branch secondDevGroup = new Branch("吴大棒槌","开发二组组长",6000);
  29. //把所有的小兵都产生出来
  30. Leaf a = new Leaf("a","开发人员",2000);
  31. Leaf b = new Leaf("b","开发人员",2000);
  32. Leaf c = new Leaf("c","开发人员",2000);
  33. Leaf d = new Leaf("d","开发人员",2000);
  34. Leaf e = new Leaf("e","开发人员",2000);
  35. Leaf f = new Leaf("f","开发人员",2000);
  36. Leaf g = new Leaf("g","开发人员",2000);
  37. Leaf h = new Leaf("h","销售人员",5000);
  38. Leaf i = new Leaf("i","销售人员",4000);
  39. Leaf j = new Leaf("j","财务人员",5000);
  40. Leaf k = new Leaf("k","CEO秘书",8000);
  41. Leaf zhengLaoLiu = new Leaf("郑老六","研发部副经理",20000);
  42. //开始组装
  43. //CEO下有三个部门经理和一个秘书
  44. root.addSubordinate(k);
  45. root.addSubordinate(developDep);
  46. root.addSubordinate(salesDep);
  47. root.addSubordinate(financeDep);
  48. //研发部经理
  49. developDep.addSubordinate(zhengLaoLiu);
  50. developDep.addSubordinate(firstDevGroup);
  51. developDep.addSubordinate(secondDevGroup);
  52. //看看开发两个开发小组下有什么
  53. firstDevGroup.addSubordinate(a);
  54. firstDevGroup.addSubordinate(b);
  55. firstDevGroup.addSubordinate(c);
  56. secondDevGroup.addSubordinate(d);
  57. secondDevGroup.addSubordinate(e);
  58. secondDevGroup.addSubordinate(f);
  59. //再看销售部下的人员情况
  60. salesDep.addSubordinate(h);
  61. salesDep.addSubordinate(i);
  62. //最后一个财务
  63. financeDep.addSubordinate(j);
  64. return root;
  65. }
  66. //遍历整棵树,只要给我跟节点,我就能遍历出所有的节点
  67. public static String getTreeInfo(Branch root){
  68. ArrayList<ICorp> subordinateList = root.getSubordinate();
  69. String info = "";
  70. for(ICorp s :subordinateList){
  71. if(s instanceof Leaf){ //是员工就直接获得信息
  72. info = info + s.getInfo()+"n";
  73. }else{ //是个小头目
  74. info = info + s.getInfo() +"n"+ getTreeInfo((Branch)s);
  75. }
  76. }
  77. return info;
  78. }
  79. }