1700472854
actor.act(this);
1700472855
1700472856
}
1700472857
1700472858
}
1700472859
1700472860
场景类稍有改动,如代码清单25-30所示。
1700472861
1700472862
代码清单25-30 场景类
1700472863
1700472864
public class Client{
1700472865
1700472866
public static void main(String[]args){
1700472867
1700472868
//定义一个演员
1700472869
1700472870
AbsActor actor=new OldActor();
1700472871
1700472872
//定义一个角色
1700472873
1700472874
Role role=new KungFuRole();
1700472875
1700472876
//开始演戏
1700472877
1700472878
role.accept(actor);
1700472879
1700472880
}
1700472881
1700472882
}
1700472883
1700472884
运行结果如下所示。
1700472885
1700472886
年龄大了,不能演功夫角色
1700472887
1700472888
看到没?不管演员类和角色类怎么变化,我们都能够找到期望的方法运行,这就是双反派。双分派意味着得到执行的操作决定于请求的种类和两个接收者的类型,它是多分派的一个特例。从这里也可以看到Java是一个支持双分派的单分派语言。
1700472889
1700472890
1700472891
1700472892
1700472894
设计模式之禅 25.5 最佳实践
1700472895
1700472896
访问者模式是一种集中规整模式,特别适用于大规模重构的项目,在这一个阶段需求已经非常清晰,原系统的功能点也已经明确,通过访问者模式可以很容易把一些功能进行梳理,达到最终目的——功能集中化,如一个统一的报表运算、UI展现等,我们还可以与其他模式混编建立一套自己的过滤器或者拦截器,请大家参考混编模式的相关章节。
1700472897
1700472898
1700472899
1700472900
1700472902
设计模式之禅 第26章 状态模式
1700472903
[
上一页 ]
[ :1.700472854e+09 ]
[
下一页 ]