1700472843
1700472844
}
1700472845
1700472846
}
1700472847
1700472848
public class IdiotRole implements Role{
1700472849
1700472850
//一个弱智角色,由谁来扮演
1700472851
1700472852
public void accept(AbsActor actor){
1700472853
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
[
上一页 ]
[ :1.700472843e+09 ]
[
下一页 ]