[周五派] 行为模式-访问者设计模式

访问者模式是一种行为设计模式, 它能将算法与其所作用的对象隔离开来。

访问者模式结构 UML

访问者和双分派

示例代码

Java 程序库代码中该模式的一些示例

看下 ElementVisitor 的源码:

public interface ElementVisitor<R, P> {
    //访问元素
    R visit(Element var1, P var2);
    default R visit(Element e) {
        return this.visit(e, (Object)null);
    }
    //访问包元素
    R visitPackage(PackageElement var1, P var2);
    //访问一个类型元素
    R visitType(TypeElement var1, P var2);
    //访问一个变量类型
    R visitVariable(VariableElement var1, P var2);
    //访问一个可执行的元素
    R visitExecutable(ExecutableElement var1, P var2);
    //访问一个参数元素
    R visitTypeParameter(TypeParameterElement var1, P var2);
    //处理未知的元素类型 , Java 为后续扩展预留的接口
    //例如后续元素类型增加了, 那么通过这个接口就可以处理上述没有声明的类型
    R visitUnknown(Element var1, P var2);
    
    default R visitModule(ModuleElement e, P p) {
        return this.visitUnknown(e, p);
    }
}

Android 程序示例:

APT 中的 AbstractProcessor.process() , 而使用APT的框架有Butterknife,Retrofit,Dagger2等。

参考:

  1. Refactoring.Guru
  2. 《Android源码设计模式解析与实战》

posted @ 2020-05-15 16:38  javakam  阅读(0)  评论(0)    收藏  举报  来源