在访问者模式中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。
访问者模式包含以下主要角色。
访问者模式的实现:
1. 创建访问者接口
public interface Visitor {
void visit(Element element);
}
2. 创建具体访问者
public class AVisitor implements Visitor {
@Override
public void visit(Element element) {
System.out.println(this.getClass().getName() + "访问了" + element.getClass().getName());
}
}
public class BVisitor implements Visitor {
@Override
public void visit(Element element) {
System.out.println(this.getClass().getName() + "访问了" + element.getClass().getName());
}
}
3. 创建元素接口
public interface Element {
void accept(Visitor visitor);
}
4. 创建具体元素
public class AElement implements Element {
@Override
public void accept(Visitor visitor) {
visitor.visit(this);
}
}
public class BElement implements Element {
@Override
public void accept(Visitor visitor) {
visitor.visit(this);
}
}
5. 创建对象结构类
public class Structure {
private List<Element> elements = new ArrayList<>();
public void add(Element element){
elements.add(element);
}
public void remove(Element element){
elements.remove(element);
}
public void accept(Visitor visitor){
for(Element element:elements){
visitor.visit(element);
}
}
}
6. 访问者模式测试
public class VisitorMain {
public static void main(String[] args) {
Structure structure = new Structure();
structure.add(new AElement());
structure.add(new BElement());
Visitor visitor_A = new AVisitor();
structure.accept(visitor_A);
Visitor visitor_B = new BVisitor();
structure.accept(visitor_B);
}
}
创建型模式
结构型模型
行为型模式
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_43598687/article/details/122108660
内容来源于网络,如有侵权,请联系作者删除!