訪問者模式是一種將資料結構和資料操作分離的設計模式,它是設計模式中最複雜的乙個,一般來說,它的使用概率並不高,但當你真當使用它時,你就真的需要它了。元素的執行演算法可以隨著訪問者改變而改變。這種型別的設計模式屬於行為型模式。根據模式,元素物件已接受訪問者物件,這樣訪問者物件就可以處理元素物件上的操作。
定義乙個元素表的介面:
public
inte***ce
computerpart
建立上述擴充套件的實體類
public
class
keyboard
implements
computerpart
}
public
class
monitor
implements
computerpart
}
public
class
mouse
implements
computerpart
}
public
class
computer
implements
computerpart;}
@override
public
void
accept
(computerpartvisitor computerpartvisitor)
computerpartvisitor.
visit
(this);
}}
定義乙個表示訪問者的介面。
public
inte***ce
computerpartvisitor
建立實現了上述類的實體訪問者
public
class
computerpartdisplayvisitor
implements
computerpartvisitor
@override
public
void
visit
(mouse mouse)
@override
public
void
visit
(keyboard keyboard)
@override
public
void
visit
(monitor monitor)
}
使用 computerpartdisplayvisitor 來顯示 computer 的組成部分。
public
class
demo
}
輸出結果:
displaying mouse.
displaying keyboard.
displaying monitor.
displaying computer.
大多數情況下,你並不需要使用訪問者模式,但當你一旦需要使用的,那就真的需要使用了。在現實的情況下,我們需要根據具體情況來判斷是否需要使用訪問者模式。
優點:
缺點:
設計模式之訪問者模式
先看一下下面這段 class person public string getaction public void setaction string action public void getconclusion else if action exciting else if action gri...
設計模式之訪問者模式
我們去銀行櫃檯辦業務,一般情況下會開幾個個人業務櫃檯的,你去其中任何乙個櫃檯辦理都是可以的。我們的訪問者模式可以很好付諸在這個場景中 對於銀行櫃檯來說,他們是不用變化的,就是說今天和明天提供個人業務的櫃檯是不需要有變化的。而我們作為訪問者,今天來銀行可能是取消費流水,明天來銀行可能是去辦理手機銀行業...
設計模式之訪問者模式
定義 表示一介作用於某個物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。結構圖 示例 public inte ce vistor public class concretevisitor1 implements vistor override public ...