1700471843
图25-4 改造后的详细类图
1700471844
1700471845
在抽象类Employee中增加了accept方法,该方法是一个抽象方法,由子类实现,其意义就是说我这个类可以允许谁来访问,也就是定义一类访问者,在具体的实现类中调用访问者的方法。我们先看访问者接口IVisitor程序,如代码清单25-5所示。
1700471846
1700471847
代码清单25-5 访问者接口
1700471848
1700471849
public interface IVisitor{
1700471850
1700471851
//首先,定义我可以访问普通员工
1700471852
1700471853
public void visit(CommonEmployee commonEmployee);
1700471854
1700471855
//其次,定义我还可以访问部门经理
1700471856
1700471857
public void visit(Manager manager);
1700471858
1700471859
}
1700471860
1700471861
该接口的意义是:该接口可以访问两个对象,一个是普通员工,一个是高层员工。我们来看其具体实现类,如代码清单25-6所示。
1700471862
1700471863
代码清单25-6 访问者实现
1700471864
1700471865
public class Visitor implements IVisitor{
1700471866
1700471867
//访问普通员工,打印出报表
1700471868
1700471869
public void visit(CommonEmployee commonEmployee){
1700471870
1700471871
System.out.println(this.getCommonEmployee(commonEmployee));
1700471872
1700471873
}
1700471874
1700471875
//访问部门经理,打印出报表
1700471876
1700471877
public void visit(Manager manager){
1700471878
1700471879
System.out.println(this.getManagerInfo(manager));
1700471880
1700471881
}
1700471882
1700471883
//组装出基本信息
1700471884
1700471885
private String getBasicInfo(Employee employee){
1700471886
1700471887
String info=“姓名:”+employee.getName()+”\t”;
1700471888
1700471889
info=info+“性别:”+(employee.getSex()==Employee.FEMALE?“女”:“男”)+”\t”;
1700471890
1700471891
info=info+“薪水:”+employee.getSalary()+”\t”;
1700471892
[
上一页 ]
[ :1.700471843e+09 ]
[
下一页 ]