访问者(Visitor)模式将某对象结构中各元素的操作从对象结构中分离出来。从而可以通过改变访问者,而实现作用于该对象结构的新操作。
访问者模式包含四部分:
- Visitor
- ConcreteVisitor
- Element
- ConcreteElement
Visitor
public interface Visitor {
void visitElementA(ElementA elementA);
void visitElementB(ElementB elementB);
}
ConcreteVisitor
class ConcreteVisitor implements Visitor {
@Override
public void visitElementA(ElementA elementA) {
}
@Override
public void visitElementB(ElementB elementB) {
}
}
Element
interface Element {
void accept(Visitor visitor);
}
ConcreteElement
class ElementA implements Element {
@Override
public void accept(Visitor visitor) {
visitor.visitElementA(this);
}
}
class ElementB implements Element {
@Override
public void accept(Visitor visitor) {
visitor.visitElementB(this);
}
}