1、訪問者模式(visitor),表示乙個作用於某物件結構中的各個元素的操作。它使你可以在不改變各個元素的類的前提下定義作用於這些元素的新操作。
2、 訪問者模式結構圖
2.1訪問者模式適用於資料結構相對穩定的系統,它把資料結構和作用於結構上的操作之間的耦合解脫開,使得操作集可以相對自由的演化。
2.2訪問者模式的目的是要把處理從資料結構中分離出來,如果系統有比較穩定的資料結構,又有易於變化的演算法的話,使用訪問者模式就是比較合適的,因為訪問者模式使得演算法的增加變得容易。
2.3訪問者的優點就是增加新的操作很容易,因為增加新的操作就意味著增加乙個新的訪問者。訪問者模式將有關的行為集中到乙個訪問者中。
3、基本**實現
visitor類,為該物件結構中concreteelement的每乙個類宣告乙個visit操作。
public abstract class visitor
concretevisi1和concretevisi2類,具體訪問者,實現每個由visitor宣告的操作。每個操作實現演算法的一部分,而該演算法片段乃是對應於結構中物件的類。
public class concretevisitor1 extends visitor
@override
public void visitconcreteelementb(concreteelementb concreteelementb)
}
public class concretevisitor2 extends visitor
@override
public void visitconcreteelementb(concreteelementb concreteelementb)
}
element類,定義乙個accept操作,它以乙個訪問者為引數。
public abstract class element
concreteelementa和concreteelementb,具體元素,實現accept操作。
public class concreteelementa extends element
//其他相關方法
public void operation()
}
public class concreteelementb extends element
//其他相關方法
public void operation()
}
objectstructure類,能列舉它的元素,可以提供乙個高層介面以允許訪問者訪問它的元素。
public class objectstructure
public void detach(element element)
public void accept(visitor visitor) }
}
客戶端**
public class client
}
大話設計模式學習筆記(28) 訪問者模式
原始碼git位址 請用物件導向的方式表明 男人成功的時候背後有個偉大的女人,女人成功的時候背後有個不成功的男人,男人失敗時悶頭喝酒 女人失敗時默默流淚。我們可以從題目中看出有兩個東西是我們可以抽象出來的 乙個人 分為男人,女人 另乙個是狀態 成功失敗 而人是不可擴充套件的,狀態可以無限擴充套件。其實...
設計模式筆記 訪問者模式
訪問者模式 表示乙個作用於某物件結構中的各元素的操作,它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。visitor類,為該物件結構中concretevisitor的每乙個類宣告乙個visit操作。訪問者介面為使用不同演算法的子類宣告訪問操作。public abstract clas...
設計模式筆記 訪問者模式
封裝一些作用於某種資料結構中的各元素的操作,它可以在不改變資料結構的前提下定義作用於這些元素的新的操作。visitor 抽象訪問者 抽象類或介面,宣告訪問者可以訪問哪些元素,具體到程式中就是visit方法的引數定義哪些物件是可以被訪問的 public inte ce ivisitorvisitor ...