Visitor……

來源:互聯網
上載者:User

訪問者模式

簡介(Brief Introduction)
意圖:表示一個作用於某對象結構中元素的操作。可以在不改變對象結構中各元素類的前提下定義作用於這些元素的新操作,最終把資料結構和作用於結構之上的操作這兩者之間的耦合性解開,如此一來,操作可以相對自由地演化。

動機:某些類階層中常常需要增加新的行為(方法),如果直接在基類中做這樣的更改,不但會給子類帶來繁重的變更負擔,而且破壞了原來設計,引入脆弱基類的問題。visitor模式,就可以針對比較穩定的資料結構,對於其內部的元素,提供易於變化的演算法。

適用性:一個對象結構包含很多類對象,他們有不同的介面,而你想對這些對象實施一些依賴於其具體類的操作;需要對一個對象結構中的對象進行很多不同的並且不想管的操作,而你想避免讓這些操作“汙染”這些對象的類,Visitor可使你可以將相關的操作集中在一個類中;已定義的對象結構的類很少改變,但經常需要在結構上定義新的操作。

  • Visitor角色:

抽象訪問者(Visitor):聲明了一個或者多個訪問操作,形成所有的具體元素角色必須事先的介面。
具體訪問者(ConcreteVisitor):實現抽象訪問者所聲明的介面,也就是抽象訪問者所聲明的各個操作。
抽象節點(Node):聲明一個接受操作Accept,接受一個訪問者對象作為參數。
具體節點(ConcreteNode):實現了抽象節點所規定的接受(access)操作。具體元素,實現父類Element的方法Accept。
結構對象(ObjectStructure):枚舉它的元素,可以提供一個高層的介面以允許訪問者訪問它的元素。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.