Visitor+visitConcreteElementA (ConcreteElementA elementA)+visitConcreteElementB (ConcreteElementB elementB)ClientConcreteVisitorA+visitConcreteElementA (ConcreteElementA elementA)+visitConcreteElementB (ConcreteElementB elementB)ConcreteVisitorB+visitConcreteElementA (ConcreteElementA elementA)+visitConcreteElementB (ConcreteElementB elementB)ObjectStructureElement+accept (Visitor visitor)ConcreteElementA+accept (Visitor visitor)+operationA ()ConcreteElementB+accept (Visitor visitor)+operationB ()visitor.visitConcreteElementA(this);visitor.visitConcreteElementB(this); 3.主要优缺点:
访问者模式的主要优点在于使得增加新的访问操作变得很容易,将有关元素对象的访问行为集中到一个访问者对象中,而不是分散到一个个的元素类中,还可以跨过类的等级结构访问属于不同的等级结构的元素类,让用户能够在不修改现有类层次结构的情况下,定义该类层次结构的操作;其主要缺点在于增加新的元素类很困难,而且在一定程度上破坏系统的封装性。