目录
模式定义
模式角色
模式分析
模式例子
模式应用
模式定义
访问者模式:表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。所以访问者模式是一种对象行为型模式。
模式角色
访问者模式包括如下角色:
Vistor(抽象访问者)
ConcreteVisitor(具体访问者)
Element(抽象元素)
ConcreteElement(具体元素)
ObjectStructure(对象结构)
模式分析
访问者模式的对象结构存储了不同类型的元素对象,以供不同的访问者访问
访问者模式包括了两个层次结构,一个是访问者层次结构,提供了抽象访问者和具体访问者,一个是元素层级结构,提供了抽象元素和具体元素
相同的访问者可以以不同的方式访问不同的元素,相同的元素可以接受不同的访问者以不同访问方式访问。
典型代码:
抽象访问者类
具体访问者类
抽象元素类
具体元素类
对象结构类
模式例子
本例子来自《设计模式》一书
实例一:购物车
顾客在超市中将选择的商品,如苹果、图书等放在购物车中,然后到收银员处付款。在购物过程中,顾客需要对这些商品进行访问,以便确认这些商品的质量,之后收银员计算价格时也需要访问购物车内顾客所选择的商品。此时,购物车作为一个ObjectStructure(对象结构)用于存储各种类型的商品,而顾客和收银员作为访问这些商品的访问者,他们需要对商品进行检查和计价。不同类型的商品其访问形式也可能不同,如苹果需要过秤之后再计价,而图书不需要。使用访问者模式来设计该购物过程。
抽象的访问者类
具体的访问者类:
元素接口类:
具体的元素类:
对象结构类:
客户端类:
config.xml
模式应用
java xml处理的DOM4j,通过访问者模式的方式来读取并解析XML文档,VisitorSupport是DOM4J提供的Visitor接口的默认适配器
….