訪問者模式,表示乙個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的操作。
訪問者模式適用於資料結構相對穩定的系統,它把資料結構和作用於結構上的操作之間的耦合解脫開,使得操作集合可以相對自由地演化。
訪問者模式的目的是要把處理從資料結構分離出來。若乙個系統有比較穩定的資料結構,又有易於變化的演算法的話,使得訪問者模式就是比較適合的,因為訪問者模式使得演算法操作的增加變得容易。訪問者模式的優點就是增加新的的操作很容易,因為增加新的操作意味著增加乙個新的訪問者。訪問者模式將有關的行為集中到乙個訪問者物件中。訪問者的缺點其實也就是使得增加新的資料結構變得困難了。
本人看這個模式的時候還是有許多地方不太懂,還有就是對這個模式的應用還有很多的模糊之處,在之後的時間裡還是要把這個模式拿出來慢慢品味。
#include #include using namespace std;
class man;
class woman;
class action //狀態抽象類
;class success : public action //成功狀態
};class woman : public people //女人類
};class objectstructure //物件結構類
void detach(people* people) //鍊錶刪除結點
void display(action* visitor) //遍歷鍊錶 列印狀態 }
};int main()
顯示結果:
[root@hjf 設計模式]# ./a.out
男人成功時,背後多半有乙個偉大的女人
女人成功時,背後多半有個不成功的男人
男人失敗時,悶頭喝酒,誰也不用勸
女人失敗時,眼淚汪汪,誰也勸不了
設計模式 訪問者模式
訪問者模式是一種資料操作與資料結構分離的設計模式,訪問者模式的基本想法是,軟體系統中擁有乙個由許多物件構成的 比較穩定的物件結構,這些物件的類都擁有乙個accept方法用來接受訪問者物件的訪問。訪問者是乙個介面,它擁有乙個visit方法,這個方法對訪問到的物件結構中不同型別的元素作出不同的處理。在物...
設計模式 訪問者模式
訪問者模式 visitor 表示乙個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。例子 男人和女人在不同的狀態下會有不同反應,採用訪問者模式,可以增加狀態很方便 抽象狀態類 class action 男人反應 virtual void getwom...
設計模式 訪問者模式
在訪問者模式 visitor pattern 中,我們使用了乙個訪問者類,它改變了元素類的執行演算法。通過這種方式,元素的執行演算法可以隨著訪問者改變而改變。這種型別的設計模式屬於行為型模式。根據模式,元素物件已接受訪問者物件,這樣訪問者物件就可以處理元素物件上的操作。1 符合單一職責原則。2 優秀...