成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

訪問者模式(Visitor)

Bryan / 644人閱讀

摘要:訪問者模式一訪問者模式定義表示一個作用于某對象結(jié)構(gòu)中的各元素操作它使你可以在不改變各元素類的前提下,定義作用于這些元素的新操作角色抽象訪問者對象具體訪問者對象抽象元素對象具體元素對象結(jié)構(gòu)對象二具體實現(xiàn)創(chuàng)建抽象元素對象創(chuàng)建具體元素對象創(chuàng)建抽象

訪問者模式

一. 訪問者模式 1.1 定義

表示一個作用于某對象結(jié)構(gòu)中的各元素操作.它使你可以在不改變各元素類的前提下,定義作用于這些元素的新操作.

1.2 角色

抽象訪問者對象(Visit).

具體訪問者對象(ConcreteVisit).

抽象元素對象(Element).

具體元素對象(ConcreteElement).

結(jié)構(gòu)對象(ObjectStructure).

二. 具體實現(xiàn) 2.1 創(chuàng)建抽象元素對象
    public interface IElement {
        void accept(IVisitor visitor);
    }
2.2 創(chuàng)建具體元素對象
    public class ElementA implements IElement {
        @Override
        public void accept(IVisitor visitor) {
            visitor.visit(this);
        }
    }
    public class ElementB implements IElement {
        @Override
        public void accept(IVisitor visitor) {
            visitor.visit(this);
        }
    }
2.3 創(chuàng)建抽象訪問者對象
    public interface IVisitor {
        void visit(ElementA element);
        void visit(ElementB element);
    }
2.4 創(chuàng)建具體訪問者對象
    public class Visitor implements IVisitor {
        @Override
        public void visit(ElementA element) {
            System.out.println("ElementA visit ... ");
        }
        @Override
        public void visit(ElementB element) {
            System.out.println("ElementB visit ... ");
        }
    }
2.5 調(diào)用
    public static void main(String[] args) {
        IElement element = new ElementA();
        IVisitor visitor = new Visitor();
        element.accept(visitor);
        element = new ElementB();
        element.accept(visitor);
    }
2.6 輸出
    ElementA visit ... 
    ElementB visit ... 
三. 優(yōu)缺點 3.1 優(yōu)點

良好的擴展性.

靈活性.

3.2 缺點

增加新的元素類困難.

四. 源碼
    https://github.com/Seasons20/DisignPattern.git

END

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/69748.html

相關(guān)文章

  • 理解設(shè)計模式

    摘要:適配器模式將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。代理模式為其他對象提供一種代理以控制對這個對象的訪問。如果用來解決排序問題不符合開閉原則,添加策略需要修改代碼用策略模式將策略抽象成接口,不同的策略實現(xiàn)該接口。 簡單工廠、工廠方法、抽象工廠 簡單工廠 通過定義多個factory.produceXXX()方法,或者通過向factory.produce(type)傳遞type參數(shù)來生成...

    saucxs 評論0 收藏0
  • PHP設(shè)計模式問者模式

    摘要:訪問者模式解決的問題在我們的代碼編寫過程當中,經(jīng)常需要對一些類似的對象添加一些的代碼,我們以一個計算機對象打印組成部分為例來看下抽象基類獲取名稱類內(nèi)存類鍵盤類計算機類循環(huán)打印各個組成部分這個時候上面的代碼看上去好像很完美的樣子,但是問 訪問者模式解決的問題 在我們的代碼編寫過程當中,經(jīng)常需要對一些類似的對象添加一些的代碼,我們以一個計算機對象打印組成部分為例來看下: /** ...

    用戶83 評論0 收藏0
  • 「譯」什么是抽象語法樹

    摘要:原文地址原文作者是抽象語法樹的縮寫詞,表示編程語言的語句和表達式中生成的。解釋器將會遍歷該數(shù)組并執(zhí)行里面的語句。,,,是一組相關(guān)的類,每一個類都需要攜帶方法以使解釋器獲得它們的值或者對它們求值。 原文地址:What is an Abstract Syntax Tree 原文作者:Chidume Nnamdi showImg(https://segmentfault.com/img...

    JouyPub 評論0 收藏0
  • php 設(shè)計模式問者模式

    摘要:概念訪問者模式實際上是讓外部類能夠獲取樹形結(jié)構(gòu)的每個節(jié)點的對象,對每個對象進行操作的模式,他能讓我們在不改動原有樹形結(jié)構(gòu)的基礎(chǔ)上擴展功能。 概念: 訪問者模式實際上是讓外部類能夠獲取樹形結(jié)構(gòu)的每個節(jié)點的對象,對每個對象進行操作的模式, 他能讓我們在不改動原有樹形結(jié)構(gòu)的基礎(chǔ)上擴展功能。比如統(tǒng)計等等 在這種模式下,必須有的幾個要素: 1: 具體的元素對象, 訪問者實際要訪問的位置(即節(jié)...

    zzir 評論0 收藏0
  • 行為型模式

    摘要:但是發(fā)出者并不清楚到底最終那個對象會處理該請求,所以,責任鏈模式可以實現(xiàn),在隱瞞客戶端的情況下,對系統(tǒng)進行動態(tài)的調(diào)整。因為訪問者模式使得算法操作增加變得容易。訪問者模式將有關(guān)行為集中到一個訪問者對象中,其改變不影響系統(tǒng)數(shù)據(jù)結(jié)構(gòu)。 總體分為3大類:創(chuàng)建型模式 (5種):工廠方法、抽象工廠、單例、建造者、原型結(jié)構(gòu)型模式(7種):適配器、裝飾器、代理、外觀、橋接、組合、享元行為型模式(11種...

    why_rookie 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<