1700472510
1700472511
姓名:李四 性别:女 薪水:1900 工作:页面美工,审美素质太不流行了!
1700472512
1700472513
姓名:王五 性别:男 薪水:18750 业绩:基本上是负值,但是我会拍马屁呀
1700472514
1700472515
本公司的月工资总额是:101150
1700472516
1700472517
然后你想修改工资的系数,没有问题!想换个展示格式,也没有问题!多多练习吧,这都是非常简单的。
1700472518
1700472519
1700472520
1700472521
1700472522
设计模式之禅 25.4.2 多个访问者
1700472523
1700472524
在实际的项目中,一个对象,多个访问者的情况非常多。其实我们上面例子就应该是两个访问者,为什么呢?报表分两种:第一种是展示表,通过数据库查询,把结果展示出来,这个就类似于我们的那个列表;第二种是汇总表,这个是需要通过模型或者公式计算出来的,一般都是批处理结果,这个类似于我们计算工资总额,这两种报表格式是对同一堆数据的两种处理方式。从程序上看,一个类就有个不同的访问者了。修改一下类图,如图25-7所示。
1700472525
1700472526
1700472527
1700472528
1700472529
图25-7 多访问者的类图
1700472530
1700472531
类图看着挺复杂,其实也没什么复杂的,只是多了两个接口和两个实现类,分别负责展示表和汇总表的业务处理,IVisitor接口没有改变,请参考代码清单25-5所示代码,这里不再赘述。我们来看展示报表接口,如代码清单25-20所示。
1700472532
1700472533
代码清单25-20 展示表接口
1700472534
1700472535
public interface IShowVisitor extends IVisitor{
1700472536
1700472537
//展示报表
1700472538
1700472539
public void report();
1700472540
1700472541
}
1700472542
1700472543
展示表的实现也比较简单,如代码清单25-21所示。
1700472544
1700472545
代码清单25-21 具体展示表
1700472546
1700472547
public class ShowVisitor implements IShowVisitor{
1700472548
1700472549
private String info=””;
1700472550
1700472551
//打印出报表
1700472552
1700472553
public void report(){
1700472554
1700472555
System.out.println(this.info);
1700472556
1700472557
}
1700472558
1700472559
//访问普通员工,组装信息
[
上一页 ]
[ :1.70047251e+09 ]
[
下一页 ]