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

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

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

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

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

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

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

評(píng)論