1.uml類圖
visitor為該物件結構中concreteelement的每乙個類宣告乙個visit操作。concretevisitor是具體的訪問者,實現每個由visitor宣告的操作,每個操作實現演算法的一部分,而該演算法片段乃是對應於結構中物件的類。objectstructure能列舉它的元素,可以提供乙個高層介面以允許訪問者訪問它的元素。element定義乙個accept操作,它以乙個訪問者為引數。concreteelement具體元素,實現accept操作。
2.示例**
public abstract class visitor
@override
public void visitconcreteelementb(concreteelementb concreteelementb)
public class concretevisitor2 extends visitor
@override
public void visitconcreteelementb(concreteelementb concreteelementb)
public abstract class element
public class concreteelementb extends element
public class objectstructure
public void detach(element element)
public void display(visitor visitor)
}public class client
3.特點
訪問者模式,表示乙個作用於某物件結構中的個元素的操作。它使你在可以不改變各元素的類的前提下定義作用於這些元素的新操作。訪問者模式適用於資料結構相對穩定的系統,它把資料結構和作用於結構上的操作之間的耦合解脫開,使得操作集合可以相對自由地演化。訪問者模式的目的是要把處理從資料結構中分離出來。乙個系統有比較穩定的資料結構,又有易於變化的演算法的話,使用訪問者模式是比較適合的,因為訪問者模式使得演算法操作的增加變得更加容易。訪問者模式的優點就是增加新的操作很容易,因為增加新的操作就意味著增加乙個新的訪問者。訪問者模式將有關行為集中到乙個訪問者物件中。訪問者的缺點其實也就是使增加新的資料結構變得困難。
設計模式 訪問者模式
訪問者模式是一種資料操作與資料結構分離的設計模式,訪問者模式的基本想法是,軟體系統中擁有乙個由許多物件構成的 比較穩定的物件結構,這些物件的類都擁有乙個accept方法用來接受訪問者物件的訪問。訪問者是乙個介面,它擁有乙個visit方法,這個方法對訪問到的物件結構中不同型別的元素作出不同的處理。在物...
設計模式 訪問者模式
訪問者模式 visitor 表示乙個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。例子 男人和女人在不同的狀態下會有不同反應,採用訪問者模式,可以增加狀態很方便 抽象狀態類 class action 男人反應 virtual void getwom...
設計模式 訪問者模式
在訪問者模式 visitor pattern 中,我們使用了乙個訪問者類,它改變了元素類的執行演算法。通過這種方式,元素的執行演算法可以隨著訪問者改變而改變。這種型別的設計模式屬於行為型模式。根據模式,元素物件已接受訪問者物件,這樣訪問者物件就可以處理元素物件上的操作。1 符合單一職責原則。2 優秀...