打字猴:1.70047251e+09
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 ]  [ 下一页 ]