From fec95caac4b4608aee922023e1742576c09693bf Mon Sep 17 00:00:00 2001 From: limqhz Date: Mon, 6 Mar 2023 10:08:30 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/quinn/sjms/visitor/Element.java | 10 ++++++++++ .../java/com/quinn/sjms/visitor/ElementImpl.java | 13 +++++++++++++ .../com/quinn/sjms/visitor/ElementStructure.java | 9 +++++++++ .../main/java/com/quinn/sjms/visitor/IVisitor.java | 12 ++++++++++++ .../main/java/com/quinn/sjms/visitor/Visitor.java | 8 ++++++++ .../java/com/quinn/sjms/visitor/VisitorClient.java | 11 +++++++++++ 6 files changed, 63 insertions(+) create mode 100644 sjms/src/main/java/com/quinn/sjms/visitor/Element.java create mode 100644 sjms/src/main/java/com/quinn/sjms/visitor/ElementImpl.java create mode 100644 sjms/src/main/java/com/quinn/sjms/visitor/ElementStructure.java create mode 100644 sjms/src/main/java/com/quinn/sjms/visitor/IVisitor.java create mode 100644 sjms/src/main/java/com/quinn/sjms/visitor/Visitor.java create mode 100644 sjms/src/main/java/com/quinn/sjms/visitor/VisitorClient.java diff --git a/sjms/src/main/java/com/quinn/sjms/visitor/Element.java b/sjms/src/main/java/com/quinn/sjms/visitor/Element.java new file mode 100644 index 0000000..e4dfa47 --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/visitor/Element.java @@ -0,0 +1,10 @@ +package com.quinn.sjms.visitor; + +public abstract class Element { + + //定义业务逻辑 + public abstract void doSomething(); + //允许谁来访问 + public abstract void accept(IVisitor visitor); + +} diff --git a/sjms/src/main/java/com/quinn/sjms/visitor/ElementImpl.java b/sjms/src/main/java/com/quinn/sjms/visitor/ElementImpl.java new file mode 100644 index 0000000..e7916e2 --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/visitor/ElementImpl.java @@ -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); + } +} diff --git a/sjms/src/main/java/com/quinn/sjms/visitor/ElementStructure.java b/sjms/src/main/java/com/quinn/sjms/visitor/ElementStructure.java new file mode 100644 index 0000000..57a8b20 --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/visitor/ElementStructure.java @@ -0,0 +1,9 @@ +package com.quinn.sjms.visitor; + +public class ElementStructure { + + public static Element createElement(){ + return new ElementImpl(); + } + +} diff --git a/sjms/src/main/java/com/quinn/sjms/visitor/IVisitor.java b/sjms/src/main/java/com/quinn/sjms/visitor/IVisitor.java new file mode 100644 index 0000000..ef8b0fb --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/visitor/IVisitor.java @@ -0,0 +1,12 @@ +package com.quinn.sjms.visitor; + +/** + * 抽象类或者接口,声明访问者可以访问哪些元素,具体到程序中就是visit方法的参数定 + * 义哪些对象是可以被访问的。 + */ +public interface IVisitor { + + //可以访问哪些对象 + void visit(ElementImpl el1); + +} diff --git a/sjms/src/main/java/com/quinn/sjms/visitor/Visitor.java b/sjms/src/main/java/com/quinn/sjms/visitor/Visitor.java new file mode 100644 index 0000000..c0ca398 --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/visitor/Visitor.java @@ -0,0 +1,8 @@ +package com.quinn.sjms.visitor; + +public class Visitor implements IVisitor { + @Override + public void visit(ElementImpl el1) { + el1.doSomething(); + } +} diff --git a/sjms/src/main/java/com/quinn/sjms/visitor/VisitorClient.java b/sjms/src/main/java/com/quinn/sjms/visitor/VisitorClient.java new file mode 100644 index 0000000..019a4ff --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/visitor/VisitorClient.java @@ -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); + } + +}