技术开发 频道

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

  运行结果完全相同,不再赘述。通过这样构件,一个非常清晰的树状人员资源管理图出现了,那我们的程序是否还可以优化?可以!你看Leaf和Branch中都有getInfo信息,是不是可以抽象?好,我们抽象一下,如图21-5所示。

图21-5 精简的类图

  你一看这个图,乐了。能不乐嘛,减少很多工作量了,接口没有了,改成抽象类了,IBranch接口也没有了,直接把方法放到了实现类中了,太精简了!而且场景类只认定抽象类Corp就成,那我们首先来看抽象类ICorp,如代码清单21-14所示。

  代码清单21-14 抽象公司职员类

public abstract class Corp {
    
//公司每个人都有名称
    private String name = "";
    
//公司每个人都职位
    private String position = "";
    
//公司每个人都有薪水
    private int salary =0;    
    
    
public Corp(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;
    }
}

  抽象类嘛,就应该抽象出一些共性的东东出来,然后看两个具体的实现类,树叶节点如代码清单21-15所示。

  代码清单21-15 树叶节点

public class Leaf extends Corp {    
    
//就写一个构造函数,这个是必须的
    public Leaf(String _name,String _position,int _salary){
        
super(_name,_position,_salary);
    }
}
0
相关文章