美文网首页爱编程,爱生活
Java设计模式<访问者模式>

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

作者: 熬夜的猫头鹰 | 来源:发表于2018-06-16 15:14 被阅读7次

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

意图

  • 将对象的结构和操作分离

角色

  • 抽象访问者:抽象类或者接口,声明访问者可以访问哪些元素,具体到程序中就是visit方法中的参数定义哪些对象是可以被访问的
  • 访问者:实现抽象访问者所声明的方法,它影响到访问者访问到一个类后该干什么,要做什么事情
  • 抽象元素类:接口或者抽象类,声明接受哪一类访问者访问,程序上是通过accept方法中的参数来定义的。抽象元素一般有两类方法,一部分是本身的业务逻辑,另外就是允许接收哪类访问者来访问
  • 元素类:实现抽象元素类所声明的accept方法,通常都是visitor.visit(this),基本上已经形成一种定式了

场景

家是一个抽象的概念,家中一台电视机,可以打开和关闭,我们可以设想这样一个场景,Tom 家可以接受Kite来访问,Kite来了之后可以打开电视,然后Kite打开电视之后可以坐在沙发上或者是吃点零食。

定义一个抽象的家

public interface Home {

    public void openTV();

    public void accept(Visitor visitor);

}

Tom的家

public class TomHome implements Home {
    @Override
    public void openTV() {
        System.err.println("打开电视机");
    }

    @Override
    public void accept(Visitor visitor) {
        visitor.visit(this);
    }
}


定义访问者

public interface Visitor {

    public void visit(Home home);
}

定义Kite


public class KiteVisitor implements Visitor{
    @Override
    public void visit(Home home) {
        home.openTV();
        System.err.println("我得吃个苹果了 ");
    }
}

测试类


public class DemoMain {

    public static void main(String[] args) {
        Home tomHome = new TomHome();
        tomHome.accept(new KiteVisitor());
    }
}

输出

打开电视机
我得吃个苹果了 

相关文章

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

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

  • Java设计模式<组合模式>

    Java设计模式<组合模式> 意图 对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和...

  • Java设计模式<模板模式>

    Java设计模式<模板模式> 意图 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改...

  • Java设计模式<命令模式>

    Java设计模式<命令模式> 意图 将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化 使用场景 ...

  • Java设计模式<策略模式>

    Java设计模式<策略模式> 意图 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换 解决的问题 在...

  • Java设计模式<代理模式>

    Java设计模式<代理模式> 意图 限制对象的访问控制 客户端无需知道代理的对象 和装饰模式的共同点 都能对现有的...

  • Java设计模式<过滤模式>

    Java设计模式<过滤模式> 意图 这种模式允许开发人员使用不同的标准来过滤一组对象 场景 在开JDBC开发中经常...

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

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

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

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

  • Java设计模式<单例模式>

    Java设计模式<单例模式> 意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点 优点 在内存里只有一个实...

网友评论

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

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