訪問者模式

Visitor Pattern

允許在不改變組合內各元素的情況下,增加各元素的新操作。

Example: 各國婚禮


訪問者模式會將類別分為兩類:
分別是訪問者類別 (Visitor)元素類別 (Element)

讓原本屬於元素的行為,變成 訪問者類別 (Visitor)
根據傳入元素的不同,會有對應的行為,緊耦合於 元素類別 (Element)


優點
將操作從元素類別抽離,使其能獨立變化。
容易新增/修改訪問者類別。

缺點
難以增加新的元素。
破壞了原本元素的封裝。
會使程式碼複雜度提高。


與其他模式的比較:

[組合模式]:
訪問者模式可能會使用到組合模式的技巧。

[迭代器模式]:
訪問者模式可能會使用到迭代器模式的技巧。


ʕ •ᴥ•ʔ:訪問者模式改變了原本的主從關係。