在訪問者模式(Visitor Pattern)中,我們使用了一個(gè)訪問者類,它改變了元素類的執(zhí)行算法。通過這種方式,元素的執(zhí)行算法可以隨著訪問者改變而改變。這種類型的設(shè)計(jì)模式屬于行為型模式。根據(jù)模式,元素對(duì)象已接受訪問者對(duì)象,這樣訪問者對(duì)象就可以處理元素對(duì)象上的操作。
主要將數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)操作分離。穩(wěn)定的數(shù)據(jù)結(jié)構(gòu)和易變的操作耦合問題。
結(jié)構(gòu)圖
![圖片](http://file1.elecfans.com/web2/M00/89/4B/wKgaomSALY2AT9LMAAOhUKfuFmA512.jpg)
角色與理解
- 訪問者模式共分為五種角色:
- Visitor (抽象訪問者):內(nèi)部聲明一個(gè)對(duì)每一個(gè)具體元素進(jìn)行訪問的操作。
- Concrete Visitor (具體訪問者):繼承抽象訪問者,實(shí)現(xiàn)對(duì)所有具體元素的一種訪問操作。
- Element (抽象元素):聲明accept()方法,以抽象訪問者作為參數(shù),供訪問者訪問。
- Concrete Element (具體元素):實(shí)現(xiàn)accept()方法,調(diào)用訪問者的訪問方法以完成訪問者對(duì)自身的訪問。
- Object Structure (對(duì)象結(jié)構(gòu)):存儲(chǔ)并管理元素,提供一個(gè)入口,使所有元素被訪問。
- 被訪問者提供訪問入口,使自身的數(shù)據(jù)被訪問者訪問。
核心代碼
![圖片](http://file1.elecfans.com/web2/M00/89/4C/wKgZomSALY2APnw_AADpKwzhtdw150.jpg)
![圖片](http://file1.elecfans.com/web2/M00/89/4D/wKgZomSALY2AYAPcAAPXXwJrZIM028.jpg)
![圖片](http://file1.elecfans.com/web2/M00/89/4D/wKgZomSALY2AbjnWAAI2qlvt-P0923.jpg)
![圖片](http://file1.elecfans.com/web2/M00/89/4B/wKgaomSALY2AMtGTAAKxeKpFl3s284.jpg)
![圖片](http://file1.elecfans.com/web2/M00/89/4B/wKgaomSALY2ANoO_AAK_gVDWgNs153.jpg)
![圖片](http://file1.elecfans.com/web2/M00/89/4D/wKgZomSALY2Acm70AANI75NQCa0341.jpg)
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
相關(guān)推薦
本文提出了一種基于入侵行為模式的告警關(guān)聯(lián)方式。入侵行為模式是定義在時(shí)間基礎(chǔ)上的一組謂詞公式,其實(shí)質(zhì)是通過時(shí)間限制聯(lián)系在一起的入侵事件的集合。該方法在對(duì)大量告
發(fā)表于 08-13 08:35
?6次下載
上網(wǎng)行為管理新模式
談起多角色管理劃分,首先讓人想起的是企業(yè)管理架構(gòu)。從管理層面上來講,角色管理劃分非常重要,企業(yè)管理者需要通過“
發(fā)表于 04-09 09:41
?447次閱讀
觀察者模式作為設(shè)計(jì)模式中行為模式的一種,解決了上述具有一對(duì)多依賴關(guān)系對(duì)象重用問題。文中在分析觀察者
發(fā)表于 02-13 16:20
?4次下載
中介者模式(Mediator Pattern) 中介者模式(Mediator Pattern): 屬于對(duì)象的行為
發(fā)表于 01-24 11:28
?320次閱讀
本文引用自本人公眾號(hào)文章: 嵌入式開發(fā)中的兩點(diǎn)編程思想 ? C語言也很講究設(shè)計(jì)模式?一文講透 ? 包含如下: 01)C語言和設(shè)計(jì)模式(繼承、封裝、多態(tài)) ? 02)C語言和設(shè)計(jì)模式(訪問者
發(fā)表于 06-20 09:09
?2027次閱讀
訪問者模式的目的是,解耦數(shù)據(jù)結(jié)構(gòu)和算法,使得系統(tǒng)能夠在不改變現(xiàn)有代碼結(jié)構(gòu)的基礎(chǔ)上,為對(duì)象新增一種新的操作。
發(fā)表于 10-08 11:05
?745次閱讀
訪問者設(shè)計(jì)模式是一種行為型設(shè)計(jì)模式,用于將算法與對(duì)象結(jié)構(gòu)分離。它允許你在不改變對(duì)象結(jié)構(gòu)的前提下定義新的操作。
發(fā)表于 06-06 11:25
?893次閱讀
提供一個(gè)中介者完成對(duì)一系列操作的封裝,降低對(duì)象間的系統(tǒng)耦合度。中介者模式又稱為調(diào)停者模式。
發(fā)表于 06-06 17:42
?741次閱讀
備忘錄模式(Memento Pattern)保存一個(gè)對(duì)象的某個(gè)狀態(tài),以便在適當(dāng)?shù)臅r(shí)候恢復(fù)對(duì)象。備忘錄模式屬于行為型模式。
發(fā)表于 06-07 11:16
?900次閱讀
在策略模式(Strategy Pattern)中,一個(gè)類的行為或其算法可以在運(yùn)行時(shí)更改。這種類型的設(shè)計(jì)模式屬于行為型模式。
發(fā)表于 06-07 11:18
?703次閱讀
在狀態(tài)模式(State Pattern)中,類的行為是基于它的狀態(tài)改變的。這種類型的設(shè)計(jì)模式屬于行為型模式。
發(fā)表于 06-07 11:20
?655次閱讀
在模板模式中,一個(gè)抽象類公開定義了執(zhí)行它的方法的方式/模板。
發(fā)表于 06-07 15:13
?633次閱讀
定義對(duì)象之間的一種一對(duì)多依賴關(guān)系,使得每一個(gè)對(duì)象發(fā)生狀態(tài)的變化時(shí),其相關(guān)依賴對(duì)象皆得到通知并被自動(dòng)更新,又稱為發(fā)布-訂閱模式、模型-視圖模式、源-監(jiān)聽器模式或從屬者
發(fā)表于 06-07 16:56
?717次閱讀
接下來介紹行為型設(shè)計(jì)模式在UVM中的應(yīng)用。
發(fā)表于 08-09 14:01
?759次閱讀
Visitor Pattern: 允許一個(gè)或者多個(gè)操作應(yīng)用到一組對(duì)象上,解耦操作和對(duì)象本身。換言之,如果component的數(shù)據(jù)結(jié)構(gòu)是比較穩(wěn)定的,但其是易于變化的,那么使用訪問者模式是個(gè)不錯(cuò)的選擇。
發(fā)表于 08-11 09:28
?820次閱讀
評(píng)論