Merge remote-tracking branch 'origin/master'

This commit is contained in:
2023-03-22 22:55:51 +08:00
6 changed files with 63 additions and 0 deletions

View File

@@ -0,0 +1,10 @@
package com.quinn.sjms.visitor;
public abstract class Element {
//定义业务逻辑
public abstract void doSomething();
//允许谁来访问
public abstract void accept(IVisitor visitor);
}

View File

@@ -0,0 +1,13 @@
package com.quinn.sjms.visitor;
public class ElementImpl extends Element {
@Override
public void doSomething() {
System.out.println("干饭");
}
@Override
public void accept(IVisitor visitor) {
visitor.visit(this);
}
}

View File

@@ -0,0 +1,9 @@
package com.quinn.sjms.visitor;
public class ElementStructure {
public static Element createElement(){
return new ElementImpl();
}
}

View File

@@ -0,0 +1,12 @@
package com.quinn.sjms.visitor;
/**
* 抽象类或者接口声明访问者可以访问哪些元素具体到程序中就是visit方法的参数定
* 义哪些对象是可以被访问的。
*/
public interface IVisitor {
//可以访问哪些对象
void visit(ElementImpl el1);
}

View File

@@ -0,0 +1,8 @@
package com.quinn.sjms.visitor;
public class Visitor implements IVisitor {
@Override
public void visit(ElementImpl el1) {
el1.doSomething();
}
}

View File

@@ -0,0 +1,11 @@
package com.quinn.sjms.visitor;
public class VisitorClient {
public static void main(String[] args) {
Element element = ElementStructure.createElement();
Visitor visitor = new Visitor();
element.accept(visitor);
}
}