1700472110
1700472111
liSi.setSex(Employee.FEMALE);
1700472112
1700472113
empList.add(liSi);
1700472114
1700472115
//再产生一个经理
1700472116
1700472117
Manager wangWu=new Manager();
1700472118
1700472119
wangWu.setName(“王五”);
1700472120
1700472121
wangWu.setPerformance(“基本上是负值,但是我会拍马屁呀”);
1700472122
1700472123
wangWu.setSalary(18750);
1700472124
1700472125
wangWu.setSex(Employee.MALE);
1700472126
1700472127
empList.add(wangWu);
1700472128
1700472129
return empList;
1700472130
1700472131
}
1700472132
1700472133
}
1700472134
1700472135
改动非常少,就黑体那么一行的改动,运行结果如下:
1700472136
1700472137
姓名:张三 性别:男 薪水:1800 工作:编写Java程序,绝对的蓝领、苦工加搬运工
1700472138
1700472139
姓名:李四 性别:女 薪水:1900 工作:页面美工,审美素质太不流行了!
1700472140
1700472141
姓名:王五 性别:男 薪水:18750 业绩:基本上是负值,但是我会拍马屁呀
1700472142
1700472143
运行结果也完全相同,那回过头来看看这个程序是怎么实现的:
1700472144
1700472145
❑第一,通过循环遍历所有元素。
1700472146
1700472147
❑第二,每个员工对象都定义了一个访问者。
1700472148
1700472149
❑第三,员工对象把自己作为一个参数调用访问者visit方法。
1700472150
1700472151
❑第四,访问者调用自己内部的计算逻辑,计算出相应的数据和表格元素。
1700472152
1700472153
❑第五,访问者打印出报表和数据。
1700472154
1700472155
事情的经过就是这个样子。那我们再来看看上面提到的数据和报表格式都会改变的情况。首先是数据的改变,数据改了当然都要改,说不上两个方案有什么优劣;其次是报表格式的修改,这个方案绝对是有优势的,我只要再产生一个IVisitor的实现类就可以产生一个新的报表格式,而其他的类都不用修改,如果你用Spring开发,那就更好了,在Spring的配置文件中使用的是接口注入,我只要把配置文件<property name=“xxx”ref=””/>中的ref修改一下就行了,其他的都不用修改了!这就是访问者模式的优势所在。
1700472156
1700472157
1700472158
1700472159
[
上一页 ]
[ :1.70047211e+09 ]
[
下一页 ]