訪問者模式
http://blog.csdn.net/chenssy/article/details/12029633
https://wizardforcel.gitbooks.io/design-pattern-lessons/content/lesson28.html
http://www.cnblogs.com/java-my-life/archive/2012/06/14/2545381.html
這個模式好難啊,似乎也沒有什麼應用的場景.
先記錄一下吧。
https://wizardforcel.gitbooks.io/design-pattern-lessons/content/lesson28.html
http://www.cnblogs.com/java-my-life/archive/2012/06/14/2545381.html
這個模式好難啊,似乎也沒有什麼應用的場景.
先記錄一下吧。
- import java.util.ArrayList;
- import java.util.List;
- public class Test {
- public static void main(String[] args) {
- // 建立一個結構物件
- ObjectStructure os = new ObjectStructure();
- // 給結構增加一個節點
- os.add(new NodeA());
- // 給結構增加一個節點
- os.add(new NodeB());
- // 建立一個訪問者
- Visitor visitor = new VisitorA();
- os.action(visitor);
- }
- }
- interface Visitor {
- /**
- * 對應於NodeA的訪問操作
- */
- public void visit(NodeA node);
- /**
- * 對應於NodeB的訪問操作
- */
- public void visit(NodeB node);
- }
- class VisitorA implements Visitor {
- /**
- * 對應於NodeA的訪問操作
- */
- @Override
- public void visit(NodeA node) {
- System.out.println(node.operationA());
- }
- /**
- * 對應於NodeB的訪問操作
- */
- @Override
- public void visit(NodeB node) {
- System.out.println(node.operationB());
- }
- }
- class VisitorB implements Visitor {
- /**
- * 對應於NodeA的訪問操作
- */
- @Override
- public void visit(NodeA node) {
- System.out.println(node.operationA());
- }
- /**
- * 對應於NodeB的訪問操作
- */
- @Override
- public void visit(NodeB node) {
- System.out.println(node.operationB());
- }
- }
- abstract class Node {
- /**
- * 接受操作
- */
- public abstract void accept(Visitor visitor);
- }
- class NodeA extends Node {
- /**
- * 接受操作
- */
- @Override
- public void accept(Visitor visitor) {
- visitor.visit(this);
- }
- /**
- * NodeA特有的方法
- */
- public String operationA() {
- return "NodeA";
- }
- }
- class NodeB extends Node {
- /**
- * 接受方法
- */
- @Override
- public void accept(Visitor visitor) {
- visitor.visit(this);
- }
- /**
- * NodeB特有的方法
- */
- public String operationB() {
- return "NodeB";
- }
- }
- class ObjectStructure {
- private List<Node> nodes = new ArrayList<Node>();
- /**
- * 執行方法操作
- */
- public void action(Visitor visitor) {
- for (Node node : nodes) {
- node.accept(visitor);
- }
- }
- /**
- * 新增一個新元素
- */
- public void add(Node node) {
- nodes.add(node);
- }
- }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-2135993/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 行為模式-訪問者模式模式
- python-訪問者模式Python模式
- 設計模式(十六)——訪問者模式設計模式
- 極簡設計模式-訪問者模式設計模式
- 深入淺出訪問者模式模式
- DesignPattern_訪問者模式_19模式
- 設計模式 - ASM 中的訪問者模式設計模式ASM
- 設計模式學習之訪問者模式設計模式
- C#設計模式之訪問者模式C#設計模式
- 【趣味設計模式系列】之【訪問者模式】設計模式
- 15.java設計模式之訪問者模式Java設計模式
- 設計模式(二十三)訪問者設計模式
- Java進階篇設計模式之十 ---- 訪問者模式和中介者模式Java設計模式
- Android理解設計模式之組合模式、迭代器模式、訪問者模式Android設計模式
- 設計模式學習-使用go實現訪問者模式設計模式Go
- 「補課」進行時:設計模式(18)——訪問者模式設計模式
- 軟體設計模式系列之二十五——訪問者模式設計模式
- 軟體設計模式學習(二十七)訪問者模式設計模式
- 聊聊OOP中的設計原則以及訪問者模式OOP模式
- 【設計模式】詳解訪問者(Visitor)模式-有多段程式碼出沒設計模式
- 設計模式學習筆記(二十一)訪問者模式及其實現設計模式筆記
- C++設計模式 - 訪問器模式(Visitor)C++設計模式
- 極簡架構模式-資料訪問物件模式架構模式物件
- tour cpp: std::variant 實現無繼承層次的訪問者模式繼承模式
- 徹底搞懂訪問者模式的靜態、動態和偽動態分派模式
- Kubernetes API訪問鑑權之Basic模式API模式
- 代理模式-訪問物件的代理而非其本身模式物件
- 重學 Java 設計模式:實戰訪問者模式「模擬家長與校長,對學生和老師的不同視角資訊的訪問場景」Java設計模式
- PHP設計模式-DAO (Data Access Objects) 資料訪問物件模式PHP設計模式Object物件
- 設計模式系列之代理模式(Proxy Pattern)——物件的間接訪問設計模式物件
- 3.2.4 開啟資料庫到限制訪問模式資料庫模式
- win10怎麼設定ftp為主動訪問模式_win10設定ftp為主動訪問模式教程Win10FTP模式
- 訪問使用者中心實現認證
- 宿主機無法訪問VM中的linux(NAT模式)Linux模式
- derby 資料庫 伺服器模式 無法訪問資料庫伺服器模式
- oralce 跨使用者訪問表 同義詞
- redis設計統計使用者訪問量Redis
- 如何用 Redis 統計使用者訪問量?Redis