表示一个作用于某对象结构中的各元素的操作。它使你在不改变各元素的类的前提下定义作用于这些元素的新操作。
visitor:抽象访问者
ConcreteVisitor:具体访问者
Element:抽象元素
ConcreteElement:具体元素
ObjectStructure:对象结构
1、增加新的访问操作方便
2、将有关元素对象的访问行为集中到一个访问者对象中,而不是分散在一个个元素类中,类的职责更加清晰
3、让用户能够在不修改现有元素类层次结构的情况下,定义作用于该层次结构的操作
一个对象结构包含多个类型的对象,希望对这些对象实施一些依赖其具体类型的操作
需要对一个对象结构中的对象进行很多不同的且不相关的操作,并需要避免让这些操作“污染”这些对象的类,也不希望在增加新操作时修改这些类
对象结构中对象对应的类很少改变,但经常需要在此对象结构上定义新的操作,比如世界上只有男人和女人,但是男人和女人对于不同的事情会有不同的反应。
原文:http://blog.csdn.net/wangdan199112/article/details/19918577