Visitor is a behavioral design pattern that lets you separate algorithms from the objects on which they operate.
Refactoring Guru
訪問者模式是一種行為型設計模式,它允許你將演算法從它們作用的物件中分離出來。
圖片來源: Refactoring Guru
將運算與元素結構分離:
當你需要對一個複雜的物件結構執行不同的操作時,不希望將這些操作的實作與元素類別緊密耦合時,Visitor模式可以幫助實現這種分離。
添加新運算而不修改現有元素類別:
透過Visitor模式,您可以輕鬆地添加新的操作,而不需要修改現有的元素類別。這對於在不破壞現有代碼結構的情況下擴展應用程序功能非常有用。
對元素結構進行多種操作:
當需要對元素結構進行多個不同的操作,而這些操作之間可能是彼此獨立的時,Visitor模式可以讓您輕鬆處理這種情況,而不會導致程式碼變得複雜和難以維護。
Element(元素):這代表物件結構中的一個元素。它提供一個接受(Accept)方法,該方法接受一個訪問者作為參數。
ConcreteElement(具體元素):這是實現元素介面(Element interface)的具體類別。
Visitor(訪問者):這個介面宣告了每個具體元素(ConcreteElement)類別的訪問(visit)操作。
ConcreteVisitor(具體訪問者):這是實作訪問者介面(Visitor interface)的具體類別。