设计模式之(19)——访问者模式

Posted Java老僧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之(19)——访问者模式相关的知识,希望对你有一定的参考价值。


福利干货第一时间送达!



一. 什么是访问者模式


访问者模式 是一种数据操作和数据结构分离的设计模式,通过这种模式,元素的执行算法可以随着访问者改变而不改变。


二. 有何优点


符合单一职责原则,扩展性良好,元素类可以通过接受不同的访问者来实现对不同操作的扩展。


三. 初尝访问者模式


1. 我们先画图以便理解。


设计模式之(19)——访问者模式


2. 我们先创建一个 Visitor 接口。


1public interface Visitor {
2      public void visit(Subject sub);
3}


3. 我们实现 Vistor 接口。


1public class MyVisitor implements Visitor{
2    @Override
3    public void visit(Subject sub) {
4        // TODO Auto-generated method stub
5       System.out.println("访问到这个科目:"+sub.getSubject());  
6    }
7}


4. 创建 Subject 接口,accept 方法,接受将要访问它的对象。


1public interface Subject {
2    public void accept(Visitor visitor);
3    public String getSubject();
4}


5. 实现 Subject 接口。


 1public class MySubject implements Subject {
2
3    @Override
4    public void accept(Visitor visitor) {
5        visitor.visit(this);
6    }
7
8    @Override
9    public String getSubject() {
10        // TODO Auto-generated method stub
11        return "Java";
12    }
13
14}


6. 创建测试类。


1public class Test {
2
3    public static void main(String[] args) {
4
5        Visitor visitor = new MyVisitor();
6        Subject subject = new MySubject();
7        subject.accept(visitor);
8    }
9}


测试结果为:

访问到这个科目:Java


四. 总结


访问者模式适用场景: 如果我们想为一个现有的类增加新功能时候用访问者模式将数据结构相对稳定的系统,可以把数据结构和算法相互解耦。



END


设计模式之(19)——访问者模式
设计模式之(19)——访问者模式



点击“阅读原文”


以上是关于设计模式之(19)——访问者模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式第19篇:访问者模式

JUC并发编程 共享模式之工具 JUC CountdownLatch(倒计时锁) -- CountdownLatch应用(等待多个线程准备完毕( 可以覆盖上次的打印内)等待多个远程调用结束)(代码片段

JAVA SCRIPT设计模式--行为型--设计模式之Observer观察者模式(19)

JAVA SCRIPT设计模式--行为型--设计模式之Observer观察者模式(19)

PHP教程:掌握php设计模式之访问者模式

设计模式之观察者模式与访问者模式详解和应用