Visitor Design Pattern(访问者设计模式)
?Visitor Design Pattern(访问者设计模式)实现要点:
所有被访问的对象必须继承一个带有accept(IVisitor)方法的接口;
被访问对象的accept方法的具体实现:visitor.visit(this), 把自己的对象暴露给visitor;
访问的对象通过实现IVisitor接口,对不同的被访问对象子类进行不同的操作。
?
好处:
1,分散在不同子类相同的功能被集中管理在一种Visitor类中,数据结构和操作分离。
2,避免使用大量的 instanceof 即可完成对各种子类的访问。
更多好处还没理解和发现。。。。。。 (思考中)
?
具体的例子(包含component design pattern)
VisitorDemo.java
?
?
更多阅读:
使用反射简化double dispatch的模拟:
?In the Java language, two techniques have been documented that use reflection to simplify the mechanics of double dispatch simulation in the visitor pattern: getting rid of accept() methods (the Walkabout variation), and getting rid of extra visit() methods.
?
?
参考:
http://en.wikipedia.org/wiki/Visitor_pattern
?