在訪(fǎng)問(wèn)者模式(Visitor Pattern)中,我們使用了一個(gè)訪(fǎng)問(wèn)者類(lèi),它改變了元素類(lèi)的執(zhí)行算法。通過(guò)這種方式,元素的執(zhí)行算法可以隨著訪(fǎng)問(wèn)者改變而改變。這種類(lèi)型的設(shè)計(jì)模式屬于行為型模式。根據(jù)模式,元素對(duì)象已接受訪(fǎng)問(wèn)者對(duì)象,這樣訪(fǎng)問(wèn)者對(duì)象就可以處理元素對(duì)象上的操作。
主要將數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)操作分離。穩(wěn)定的數(shù)據(jù)結(jié)構(gòu)和易變的操作耦合問(wèn)題。
結(jié)構(gòu)圖
角色與理解
- 訪(fǎng)問(wèn)者模式共分為五種角色:
- Visitor (抽象訪(fǎng)問(wèn)者):內(nèi)部聲明一個(gè)對(duì)每一個(gè)具體元素進(jìn)行訪(fǎng)問(wèn)的操作。
- Concrete Visitor (具體訪(fǎng)問(wèn)者):繼承抽象訪(fǎng)問(wèn)者,實(shí)現(xiàn)對(duì)所有具體元素的一種訪(fǎng)問(wèn)操作。
- Element (抽象元素):聲明accept()方法,以抽象訪(fǎng)問(wèn)者作為參數(shù),供訪(fǎng)問(wèn)者訪(fǎng)問(wèn)。
- Concrete Element (具體元素):實(shí)現(xiàn)accept()方法,調(diào)用訪(fǎng)問(wèn)者的訪(fǎng)問(wèn)方法以完成訪(fǎng)問(wèn)者對(duì)自身的訪(fǎng)問(wèn)。
- Object Structure (對(duì)象結(jié)構(gòu)):存儲(chǔ)并管理元素,提供一個(gè)入口,使所有元素被訪(fǎng)問(wèn)。
- 被訪(fǎng)問(wèn)者提供訪(fǎng)問(wèn)入口,使自身的數(shù)據(jù)被訪(fǎng)問(wèn)者訪(fǎng)問(wèn)。
核心代碼
- 抽象訪(fǎng)問(wèn)者
- 具體訪(fǎng)問(wèn)者
- 抽象元素
- 具體元素
- 對(duì)象結(jié)構(gòu)
- 客戶(hù)端
-
算法
+關(guān)注
關(guān)注
23文章
4678瀏覽量
94295 -
存儲(chǔ)管理
+關(guān)注
關(guān)注
0文章
31瀏覽量
9329
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
基于入侵行為模式的告警關(guān)聯(lián)
上網(wǎng)行為管理新模式
基于觀(guān)察者模式的屏幕布局控件設(shè)計(jì)

Java設(shè)計(jì)模式(二十一):中介者模式
嵌入式軟件設(shè)計(jì)模式 好文值得收藏
GoF設(shè)計(jì)模式之訪(fǎng)問(wèn)者模式
設(shè)計(jì)模式:訪(fǎng)問(wèn)者設(shè)計(jì)模式
設(shè)計(jì)模式行為型:中介模式

設(shè)計(jì)模式行為型:備忘錄模式

設(shè)計(jì)模式行為型:策略模式

設(shè)計(jì)模式行為型:狀態(tài)模式

設(shè)計(jì)模式行為型:觀(guān)察者模式

UVM設(shè)計(jì)模式之訪(fǎng)問(wèn)者模式

評(píng)論