技术开发 频道

组合模式:实战人事管理之树状结构

  有了接口,就应该有实现,其具体的实现类如代码清单21-4所示。

  代码清单21-4 分支的节点实现

public class Branch implements IBranch {
    
//存储子节点的信息
    private ArrayList subordinateList = new ArrayList();
    
//树枝节点的名称
    private String name="";
    
//树枝节点的职位
    private String position = "";
    
//树枝节点的薪水
    private int salary = 0;
    
//通过构造函数传递树枝节点的参数
    public Branch(String name,String position,int salary){
        
this.name = name;
        
this.position = position;
        
this.salary = salary;
    }
    
//增加一个子树枝节点
    public void add(IBranch branch) {
        
this.subordinateList.add(branch);
    }
    
//增加一个叶子节点
    public void add(ILeaf leaf) {
        
this.subordinateList.add(leaf);
    }
    
//获得自己树枝节点的信息
    public String getInfo() {
        String info
= "";
        info
= "名称:" + this.name;
        info
= info + "\t职位:"+ this.position;
        info
= info + "\t薪水:"+this.salary;
        
return info;
    }
    
//获得下级的信息
    public ArrayList getSubordinateInfo() {
        
return this.subordinateList;
    }
}

  不管是总经理还是部门经理都是有子节点的存在,最终的子节点就是叶子节点,其接口如代码清单21-5所示。

  代码清单21-5 叶子节点的接口

public interface ILeaf {    
    
//获得自己的信息呀
    public String getInfo();

}

  叶子节点的接口简单,实现也非常容易,如代码清单21-6所示。

  代码清单21-6 叶子节点的实现

public class Leaf implements ILeaf {
    
//叶子叫什么名字
    private String name = "";
    
//叶子的职位
    private String position = "";
    
//叶子的薪水
    private int salary=0;
    
//通过构造函数传递信息
    public Leaf(String name,String position,int salary){
        
this.name = name;
        
this.position = position;
        
this.salary = salary;
    }
    
//最小的小兵只能获得自己的信息了
    public String getInfo() {
        String info
= "";
        info
= "名称:" + this.name;
        info
= info + "\t职位:"+ this.position;
        info
= info + "\t薪水:"+this.salary;
        
return info;
    }
}
0
相关文章