原始碼git位址 請用物件導向的方式表明:
男人成功的時候背後有個偉大的女人,
女人成功的時候背後有個不成功的男人,
男人失敗時悶頭喝酒
女人失敗時默默流淚。
我們可以從題目中看出有兩個東西是我們可以抽象出來的:乙個人(分為男人,女人),另乙個是狀態(成功失敗)。而人是不可擴充套件的,狀態可以無限擴充套件。其實**結構應該為:男人在***狀態下會yyy,女人在aaa狀態下會bbb。
表示乙個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。
package visitormode;
public
class
visitormode
}/**
* 人介面
*/inte***ce
human
class
manimplements
human
}class
woman
implements
human
}/**
* 狀態介面
*/inte***ce
action
class
success
implements
action
@override
public
void womanconclusion(human woman)
}class
failure
implements
action
@override
public
void womanconclusion(human woman)
}
輸出:
man成功的時候背後有個偉大的女人
man失敗時悶頭喝酒
woman成功的時候背後有個不成功的男人
woman失敗時默默流淚
注:書中還有乙個objectstructure類,所做的事情就是管理客戶端中new出來的human物件,然後又提供了乙個展示方法供客戶端呼叫。我覺得有沒有這個類都無所謂,所以偷個懶沒加。
訪問者模式適用於資料結構相對穩定的系統,它把資料結構(human相關)和作用於結構上的操作(action相關)之間耦合解脫開,使得操作集合可以相對自由的演化(我們增加乙個action不會影響其他類)。訪問者的優點在於增加新的操作很容易,但缺點也很明顯,新增加乙個資料結構(不男不女)很困難(需要在action的每乙個類新增乙個方法)。
《大話設計模式 訪問者模式》筆記
1 訪問者模式 visitor 表示乙個作用於某物件結構中的各個元素的操作。它使你可以在不改變各個元素的類的前提下定義作用於這些元素的新操作。2 訪問者模式結構圖 2.1訪問者模式適用於資料結構相對穩定的系統,它把資料結構和作用於結構上的操作之間的耦合解脫開,使得操作集可以相對自由的演化。2.2訪問...
28 訪問者模式
表示乙個作用於某物件結構中的各元素的操作,它使你可以在不改變各元素的前提下定義作用於這些元素的新操作。適用於資料結構相對穩定,又有易於變化的演算法的系統 就是element穩定,visitor經常變化 由於把資料結構和資料結構上的操作進行了解耦,也就是把處理從資料結構中分離出來,使得增加新的操作很容...
《設計模式》學習筆記 訪問者模式
在訪問者模式 visitor pattern 中,我們使用了乙個訪問者類,它改變了元素類的執行演算法。通過這種方式,元素的執行演算法可以隨著訪問者改變而改變。這種型別的設計模式屬於行為型模式。根據模式,元素物件已接受訪問者物件,這樣訪問者物件就可以處理元素物件上的操作。意圖 主要將資料結構與資料操作...