设计模式之(19)——访问者模式
Posted Java老僧
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之(19)——访问者模式相关的知识,希望对你有一定的参考价值。
福利干货第一时间送达!
二. 有何优点
符合单一职责原则,扩展性良好,元素类可以通过接受不同的访问者来实现对不同操作的扩展。
三. 初尝访问者模式
1. 我们先画图以便理解。
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)——访问者模式的主要内容,如果未能解决你的问题,请参考以下文章
JUC并发编程 共享模式之工具 JUC CountdownLatch(倒计时锁) -- CountdownLatch应用(等待多个线程准备完毕( 可以覆盖上次的打印内)等待多个远程调用结束)(代码片段
JAVA SCRIPT设计模式--行为型--设计模式之Observer观察者模式(19)