打字猴:1.700472247e+09
1700472247
1700472248 public void accept(IVisitor visitor){
1700472249
1700472250 visitor.visit(this);
1700472251
1700472252 }
1700472253
1700472254 }
1700472255
1700472256 它定义了两个具体元素,我们再来看抽象访问者,一般是有几个具体元素就有几个访问方法,如代码清单25-13所示。
1700472257
1700472258 代码清单25-13 抽象访问者
1700472259
1700472260 public interface IVisitor{
1700472261
1700472262 //可以访问哪些对象
1700472263
1700472264 public void visit(ConcreteElement1 el1);
1700472265
1700472266 public void visit(ConcreteElement2 el2);
1700472267
1700472268 }
1700472269
1700472270 具体访问者如代码清单25-14所示。
1700472271
1700472272 代码清单25-14 具体访问者
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 结构对象
[ 上一页 ]  [ :1.700472247e+09 ]  [ 下一页 ]