设计模式-行为型软件设计模式(二)

访问者模式模式

简介

访问者模式在处理数据结构较稳定,但是作用于其上的操作需要经常变化的问题时是非常有效的。
访问者模式是指作用于一个对象结构体上的元素的操作。访问者可以使用用户在不改变该结构体中的类的基础上定义一个新的操作。

这里写图片描述
(1)Visitor:为每个Element的类声明了一个访问操作。该访问操作的名字最好要包含被访问的类的名字,以便确认该访问操作是专门针对哪个具体的类。
(2)ConcreteVisitor:实现Visitor声明的运算。每个运算实现为对应的类的对象定义的算法的一部分。ConcreteVisitor提供算法的环境并且存储其局部状态。
(3)Element:定义了一些基本的方法,其中包含提供基本数据的方法,例如一些get()和set()方法。重要的是,每个Element子类都必须定义一个接受者方法,该方法一Visistor为参数类型:Accept(Visitor),其作用是为被访问者对象与访问者对象之间的交互提供接口。
(4)ConcreteElement:具体的Element的子类,例如ElementA,该类包含一个accept方法接受访问者对象。另外,该类还可能定义一些其他的方法以帮助访问者实现一些功能。
(5)ObjectStructure:提供一个高层接口,允许访问者访问Element的子类。在该类中可以包含一个结构,例如ArrayList,Vector等,提供所要访问的element类的列表。

示例

假设人由手,脚,身体,头组成。

优点

(1)使得在访问者类中针对复杂类结构中的某个类添加新方法较为容易,即只需要简单地添加一个新的访问者方法即可。如果不采用访问者模式,则需要在每个类中添加一个方法。
(2)访问者将相关的方法集中在一个具体的访问者类中,而将其他相关的方法集中在另外一个具体的访问者类中。

缺点:

增加一个具体的新的ConcreteElement类比较困难。此时需要在每个ConcreteVisitor类中添加该ConcreteElement类的访问方法。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年6月9日
下一篇 2017年6月9日

相关推荐