訪問者模式

訪問者模式是一種將算法與對象結構分離的軟件設計模式 。 這個模式的基本想法如下 ： 首先我們擁有一個由許多對象構成的對象結構 ， 這些對象的類都擁有一個accept方法用來接受訪問者對象 ； 訪問者是一個接口 ， 它擁有一個visit方法 ， 這個方法對訪問到的對象結構中不同類型的元素作出不同的反應 ； 在對象結構的一次訪問過程中 ， 我們遍歷整個對象結構 ， 對每一個元素都實施accept方法 ， 在每一個元素的accept方法中回調訪問者的visit方法 ， 從而使訪問者得以處理對象結構的每一個元素 。 我們可以針對對象結構設計不同的實在的訪問者類來完成不同的操作 。 訪問者模式使得我們可以在傳統的單分派語言 （ 如Smalltalk 、 Java和C + + ） 中模擬雙分派技術 。 對於支持多分派的語言 （ 如CLOS ） ， 訪問者模式已經內置於語言特性之中了 ， 從而不再重要 。