访问者模式(Visitor),表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的提前下定义作用于这些元素的新操作。
Visitor(访问者)
Visitor角色负责对数据结构中每一个具体的元素(ConcreteElement角色)声明一个用于访问XXXX的visit(XXXX)方法。visit(XXXX)是用于处理XXXX的方法,负责实现该方法的是ConcreteVisitor角色。
ConcreteVisitor(具体的访问者)
ConcreteVisitor角色负责实现Visitor角色所定义的接口(API)。它要实现所有的visit(XXXX)方法,即实现如何处理每一个ConcreteElement角色。
Element(元素)
Element角色表示Visitor角色的访问对象,它声明了接受访问者的accept方法。accept方法接收到的参数是Visitor角色。
ConcreteElement
ConcreteElement角色负责实现Element角色所定义的接口(API)。
ObjectStructure(对象结构)
ObjectStructure角色负责处理Element角色的集合。ConcreteVisitor角色为每一个Element角色都准备了处理方法。
职责链模式(Chain of Responsibility),使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有个对象处理它为止。
Handler(处理者)
Handler角色定义了处理请求的接口(API)。Handler角色知道“下一个处理者”是谁,如果自己无法处理请求,它会将请求转给“下一个处理者“,“下一个处理者”也是Handler角色。
ConcreteHandler(具体的处理者)
ConcreteHandler角色是处理请求的具体角色。
Client(请求者)
Client角色是向第一个ConcreteHandler角色发送请求的角色。