1700472310
}else{
1700472311
1700472312
return new ConcreteElement2();
1700472313
1700472314
}
1700472315
1700472316
}
1700472317
1700472318
}
1700472319
1700472320
进入了访问者角色后,我们对所有的具体元素的访问就非常简单了,我们通过一个场景类模拟这种情况,如代码清单25-16所示。
1700472321
1700472322
代码清单25-16 场景类
1700472323
1700472324
public class Client{
1700472325
1700472326
public static void main(String[]args){
1700472327
1700472328
for(int i=0;i<10;i++){
1700472329
1700472330
//获得元素对象
1700472331
1700472332
Element el=ObjectStruture.createElement();
1700472333
1700472334
//接受访问者访问
1700472335
1700472336
el.accept(new Visitor());
1700472337
1700472338
}
1700472339
1700472340
}
1700472341
1700472342
}
1700472343
1700472344
通过增加访问者,只要是具体元素就非常容易访问,对元素的遍历就更加容易了,甭管它是什么对象,只要它在一个容器中,都可以通过访问者来访问,任务集中化。这就是访问者模式。
1700472345
1700472346
1700472347
1700472348
1700472350
设计模式之禅 25.3 访问者模式的应用
1700472351
1700472352
25.3.1 访问者模式的优点
1700472353
1700472354
❑符合单一职责原则
1700472355
1700472356
具体元素角色也就是Employee抽象类的两个子类负责数据的加载,而Visitor类则负责报表的展现,两个不同的职责非常明确地分离开来,各自演绎变化。
1700472357
1700472358
❑优秀的扩展性
1700472359
[
上一页 ]
[ :1.70047231e+09 ]
[
下一页 ]