美文网首页
Java设计模式--访问者模式

Java设计模式--访问者模式

作者: 留给时光吧 | 来源:发表于2018-05-12 22:11 被阅读0次

这种模式主要是为了实现下面一种功能:类的执行可以随着访问者改变而改变。简单实现:

元素类接口,也就是被访问者

interface Element {
    void accept(Visitor visitor);
}

具体元素

public class ElementA implements Element{
    @Override
    public void accept(Visitor visitor) {
        visitor.visit(this);
    }

    public String actionA1() {
        return "actionA1";
    }

    public String actionA2() {
        return "actionA2";
    }
}

public class ElementB implements Element{
    @Override
    public void accept(Visitor visitor) {
        visitor.visit(this);
    }

    public String actionB1() {
        return "actionB1";
    }

    public String actionB2() {
        return "actionB2";
    }
}

访问者接口

interface Visitor {
    void visit(ElementA e);
    void visit(ElementB e);
}

具体访问者

public class Visitor1 implements Visitor {
    @Override
    public void visit(ElementA e) {
        System.out.println(e.actionA1());
    }

    @Override
    public void visit(ElementB e) {
        System.out.println(e.actionB1());
    }
}

public class Visitor2 implements Visitor {
    @Override
    public void visit(ElementA e) {
        System.out.println(e.actionA2());
    }

    @Override
    public void visit(ElementB e) {
        System.out.println(e.actionB2());
    }
}

结构类,类似于管理者

public class Structure {
    private ArrayList<Element> elementList = new ArrayList<>();

    public void action(Visitor visitor) {
        for (Element e : elementList) {
            e.accept(visitor);
        }
    }

    public void add(Element e) {
        elementList.add(e);
    }
}

测试类·

    public static void main(String[] args) {
        Structure structure = new Structure();
        structure.add(new ElementA());
        structure.add(new ElementB());

        Visitor1 visitor1 = new Visitor1();
        structure.action(visitor1);

        Visitor2 visitor2 = new Visitor2();
        structure.action(visitor2);
    }

相关文章

  • Java设计模式<访问者模式>

    Java设计模式<访问者模式> 意图 将对象的结构和操作分离 角色 抽象访问者:抽象类或者接口,声明访问者可以访问...

  • [Android]设计模式-访问者模式

    [Android]设计模式-访问者模式 访问者模式 Visitor 【备注】只用于个人收藏

  • 设计模式[23]-访问者模式-Visitor Pattern

    1.访问者模式简介 访问者模式(Visitor Pattern)模式是行为型(Behavioral)设计模式,提供...

  • 访问者模式

    《java与模式》中是这样描述访问者模式作用的: 访问者模式是对象的行为模式。访问者模式的目的是封装一些施加于某种...

  • 设计模式之访问者(Visitor)

    访问者模式,是行为型设计模式之一。访问者模式是一种将数据操作与数据结构分离的设计模式,它可以算是 23 中设计模式...

  • Java设计模式系列-外观模式

    原创文章,转载请标注出处:《Java设计模式系列-外观模式》 一、概述 外观模式,一般用在子系统与访问者之间,用于...

  • 访问者模式

    Java的设计模式很多,以前看过很多遍,最近才搞懂了访问者模式,真是惭愧,看了一些github的源码有一些访问者模...

  • 访问者模式一篇就够了

    访问者模式介绍 最复杂的设计模式,并且使用频率不高,《设计模式》的作者评价为:大多情况下,你不需要使用访问者模式,...

  • 访问者模式

    访问者模式属于行为型模式。访问者模式是一种将数据结构和数据操作分离的设计模式。访问者模式比较复杂,而且实际使用的地...

  • 设计模式——访问者模式

    在阎宏博士的《JAVA与模式》一书中开头是这样描述访问者(Visitor)模式的:访问者模式是对象的行为模式。访问...

网友评论

      本文标题:Java设计模式--访问者模式

      本文链接:https://www.haomeiwen.com/subject/ibohdftx.html