文档章节

每天一个设计模式之(18)-----访问者模式

SamrtLamb
 SamrtLamb
发布于 2017/07/25 16:19
字数 274
阅读 2
收藏 0

1.为什么要使用访问者模式

    博主看了好几遍,实在是看不出来访问者模式到底在讲什么东西,可能博主功力太浅- -,对该模式的使用场景也不太理解,先写着把。

2.类图

    简单解释一下,Element是要被访问的元素,是抽象的,有两个实现类,其中doSomething是业务逻辑方法,accept是关于访问者的方法。Visitor就是要抽象访问者,它可以访问Element的具体实现类,ConcreteVisitor是其实现类。

3.实现

    Element相关

public abstract class Element {

    public abstract void doSomething();

    public abstract void accept(Visitor visitor);
}


public class ConcretrElement1 extends Element{
    @Override
    public void doSomething() {
        System.out.println("I'm element1");
    }

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

public class ConcretrElement2 extends Element{
    @Override
    public void doSomething() {
        System.out.println("I'm element2");
    }

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


}

    visitor相关

public interface Visitor {

    public void visit(ConcretrElement1 element);
    public void visit(ConcretrElement2 element);
}



public class ConcreteVisitor implements Visitor{
    @Override
    public void visit(ConcretrElement1 element) {
        element.doSomething();
    }

    @Override
    public void visit(ConcretrElement2 element) {
        element.doSomething();
    }
}

    main方法

public class Main {

    public static void main(String[] args) {
        Element element1 = new ConcretrElement1();
        element1.accept(new ConcreteVisitor());
    }
}

//输出
I'm element1

 

© 著作权归作者所有

共有 人打赏支持
SamrtLamb
粉丝 0
博文 28
码字总数 19760
作品 0
杭州
私信 提问
设计模式 2014-12-19

book: 阎宏《JAVA与模式》 架构设计栏目 http://blog.csdn.net/enterprise/column.html 概要: http://bbs.csdn.net/forums/Embeddeddriver 23种设计模式分别是: 1.单例模式 2.工厂方法模式...

jayronwang
2014/12/19
0
0
(目录)设计模式(可复用面向对象软件的基础)

本系列“设计模式”博客使用Golang语言实现算法。所谓算法是指解决一个问题的步骤,个人觉得不在于语言。小弟只是最近学习Golang,所以顺带熟练一下语法知识,别无它意。 本系列博客主要介绍...

chapin
2015/01/13
0
0
设计模式Java Design Pattern-工厂方法模式FactoryMethod

我的博客 一、 设计模式的分类 大体可以分为三类: 创建型模式(5个) 单例模式、原型模式、工厂方法模式、抽象工厂模式、建造者模式 结构性模式(7个) 适配器模式、装饰器模式、代理模式、...

勇敢写信
03/22
0
0
设计模式22——Visitor设计模式

Visitor访问者设计模式是在不修改已有程序结构的前提下,通过添加额外的“访问者”来完成对已有代码功能的提升。 Visitor访问者设计模式的角色: (1) 访问者角色(Visitor):声明一个访问接...

小米米儿小
2014/01/27
0
0
【设计模式笔记】(十六)- 代理模式

一、简述 代理模式(Proxy Pattern),为其他对象提供一个代理,并由代理对象控制原有对象的引用;也称为委托模式。 其实代理模式无论是在日常开发还是设计模式中,基本随处可见,中介者模式中...

MrTrying
06/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

中国龙-扬科
24分钟前
2
0
使用vuex的state状态对象的5种方式

vuex是一个专门为vue.js设计的状态管理模式,并且也可以使用devtools进行调试。 下面给大家来贴一下我的vuex的结构 下面是store文件夹下的state.js和index.js内容 //state.jsconst state =...

peakedness丶
27分钟前
1
0
NetCore MVC Demo

地址:http://114.116.9.72:5411

whltian
35分钟前
1
0
Netty handle方法周期 (四)

写了一个练习之后,发现自定义的助手类每次肯定是必须的,对于不同的业务逻辑需求,会写相对应的逻辑 最简单的查看Handle生命周期的方式,就是重写上级方法,看名字差不多应该可以知道方法的作用 ...

_大侠__
40分钟前
7
0
vue主动刷新页面及列表数据删除后的刷新实例

1.场景 在处理列表时,常常有删除一条数据或者新增数据之后需要重新刷新当前页面的需求。 2.遇到的问题 1. 用vue-router重新路由到当前页面,页面是不进行刷新的 2.采用window.reload(),或者...

前端小攻略
50分钟前
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部