行為型模式之十 訪問者模式

2021-07-07 01:56:21 字數 1904 閱讀 2462

訪問者模式(visitor pattern):表示乙個作用於某物件結構中各元素的操作,它使我們可以在不改變各元素的類的前提下定義作用於這些元素的新操作。它是一種物件行為型模式。

抽象訪問者為物件結構類中每乙個具體元素類宣告乙個訪問操作,從這個操作的名稱或引數型別可以清楚知道需要訪問的具體元素的型別,具體訪問者需要實現這些操作方法,定義對這些元素的訪問操作。

concretevisitor

具體訪問者實現了每個由抽象訪問者宣告的操作,每乙個操作用於訪問物件結構中一種型別的元素。

element

抽象元素一般是抽象類或者介面,它定義乙個accept()方法,該方法以乙個抽象訪問者作為引數。

concreteelement

具體元素實現了accept()方法,在其accept()中呼叫訪問者的訪問方法以便完成對乙個元素的操作。

objectstructure

物件結構是乙個元素的集合,它用於存放元素物件,並且提供了遍歷其內部元素的方法。它可以結合組合模式來實施,也可以是乙個簡單的集合物件。

顧客在超市中將選取的商品,如蘋果、圖書等放在購物車中,然後到收銀員處付款。在購物過程中,顧客需要對這些商品進行訪問,以便確認這些商品的質量,之後收銀員計算**時也需要訪問購物車內顧客所選擇的商品。此時,購物車作為乙個objectstructure用於儲存各種型別的商品,而顧客和收銀員作為訪問這些商品的訪問者,他們需要對商品進行檢查和計價。不同型別的商品其訪問形式也可能不同,如蘋果需要過秤後再計價,而圖書不需要。使用訪問者模式來設計該購物過程。

例項類圖如下:

}注:至此只有直譯器一種模式未講,因為使用極少。所有模式講解均摘抄《設計模式》一書,該書主編劉偉,副主編胡志剛、郭克華,清華大學出版社。個人以為這本書將得淺顯易懂,適合初學者,若有初學者有不理解的地方,可以查閱此書。

行為型模式 訪問者模式

在訪問者模式 visitor pattern 中,我們使用了乙個訪問者類,它改變了元素類的執行演算法。通過這種方式,元素的執行演算法可以隨著訪問者改變而改變。這種型別的設計模式屬於行為型模式。根據模式,元素物件已接受訪問者物件,這樣訪問者物件就可以處理元素物件上的操作。主要將資料結構與資料操作分離。...

行為型模式 訪問者模式

在訪問者模式 visitor pattern 中,我們使用了乙個訪問者類,它改變了元素類的執行演算法。通過這種方式,元素的執行演算法可以隨著訪問者改變而改變。這種型別的設計模式屬於行為型模式。根據模式,元素物件已接受訪問者物件,這樣訪問者物件就可以處理元素物件上的操作。意圖 主要將資料結構與資料操作...

行為型模式 訪問者模式

定義 目的時封裝一些施加於某些資料結構元素之上的操作,一但這些操作需要修改,接受這些操作的資料結構則可以保持不變。角色 抽象訪問者 定義cpu和硬碟的訪問 屬性 具體訪問者 實現訪問 硬體型別和執行 抽象元素 定義硬體型號,運轉,訪問 引數 抽象訪問者 具體元素 實現cpu和硬碟的抽象方法 結構物件...