打字猴:1.700472273e+09
1700472273
1700472274 public class Visitor implements IVisitor{
1700472275
1700472276 //访问el1元素
1700472277
1700472278 public void visit(ConcreteElement1 el1){
1700472279
1700472280 el1.doSomething();
1700472281
1700472282 }
1700472283
1700472284 //访问el2元素
1700472285
1700472286 public void visit(ConcreteElement2 el2){
1700472287
1700472288 el2.doSomething();
1700472289
1700472290 }
1700472291
1700472292 }
1700472293
1700472294 结构对象是产生出不同的元素对象,我们使用工厂方法模式来模拟,如代码清单25-15所示。
1700472295
1700472296 代码清单25-15 结构对象
1700472297
1700472298 public class ObjectStruture{
1700472299
1700472300 //对象生成器,这里通过一个工厂方法模式模拟
1700472301
1700472302 public static Element createElement(){
1700472303
1700472304 Random rand=new Random();
1700472305
1700472306 if(rand.nextInt(100)>50){
1700472307
1700472308 return new ConcreteElement1();
1700472309
1700472310 }else{
1700472311
1700472312 return new ConcreteElement2();
1700472313
1700472314 }
1700472315
1700472316 }
1700472317
1700472318 }
1700472319
1700472320 进入了访问者角色后,我们对所有的具体元素的访问就非常简单了,我们通过一个场景类模拟这种情况,如代码清单25-16所示。
1700472321
1700472322 代码清单25-16 场景类
[ 上一页 ]  [ :1.700472273e+09 ]  [ 下一页 ]