——《設計模式》gof
為該物件結構中的concreteelement的每乙個類宣告乙個操作。該操作的名字和特徵標識了傳送visit請求給該訪問者的那個類。
實現每個visitor宣告的操作。每個操作實現本演算法的一部分,而該演算法片斷乃是對應於結構中物件的類。
定義乙個accept操作,它以乙個訪問者作為引數。
實現accept操作,該操作以乙個訪問者為引數
能列舉它的元素
可以提供乙個高層的介面以允許該訪問者訪問它的元素
可以是乙個復合或是乙個集合。
訪問者模式使得易於增加新的操作
訪問者集中相關的操作而分離無關的操作
增加新的concreteelement類很困難
通過類層次進行訪問
累積狀態
破壞封裝
雙分派(double dispatch)
誰負責遍歷物件結構
class visitorstructure
}abstract class visitor
class concretevisitora : visitor
public override void visitconcreteelementb(concreteelementb concreteelementb)
}class concretevisitorb : visitor
public override void visitconcreteelementb(concreteelementb concreteelementb)
}abstract class element
}class concreteelementa:element
}class concreteelementb : element
}
Java設計模式 行為型 訪問者模式
這個世界上存在很多事情,每個人都有各自要做的事情,有屬於你的事情,當然也有屬於我的事情,不過我們都在為各自的事情努力奮鬥。這個世界存在的很多事情 public inte ce goal 我有我的目標 public inte ce yougoal 你有你的目標 public inte ce megoa...
訪問者模式 物件行為模式
終於到最後乙個模式了,意圖 表示乙個作用於某物件結構中的各元素的操作。它使你可以再不改變各元素的類的前提下定義作用於這些元素的新操作。動機 使用visitor 模式,必須定義兩個類層次 乙個對應於接受操作的元素,另乙個對應於定義對元素的操作的訪問者 visitor 給訪問者類層次增加乙個新的子類即可...
行為型模式 訪問者模式
在訪問者模式 visitor pattern 中,我們使用了乙個訪問者類,它改變了元素類的執行演算法。通過這種方式,元素的執行演算法可以隨著訪問者改變而改變。這種型別的設計模式屬於行為型模式。根據模式,元素物件已接受訪問者物件,這樣訪問者物件就可以處理元素物件上的操作。主要將資料結構與資料操作分離。...