表示乙個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。
示例**
//訪問者模式
//visitor 類,為該物件結構中 concreteelement 的每乙個類宣告乙個 visit 操作
class visitor
;//concreteelement 類,具體元素,實現accept操作。
class concreteelementa :public element
};class concreteelementb :public element
};//concretevisitor 類,具體訪問者,實現每乙個由 visitor 宣告的操作。每個操作實現演算法的一部分,而該演算法片斷乃是對應於結構中物件的類。
class concretevisitor1 :public visitor
void visitconcreteelementb(concreteelementb b)
};class concretevisitor2 :public visitor
void visitconcreteelementb(concreteelementb b)
};//element 類,定義乙個accept操作,它以乙個訪問者為引數。
class element
;//objectstructure 類,能列舉它的元素,可以提供乙個高層的介面以允許訪問者訪問它的元素。
class objectstructure
void detach(element *element)
void accept(visitor *visitor)
}private:
listm_element;
};int main()
訪問者模式
訪問者模式 visitor pattern 訪問者模式是物件的行為模式。訪問者模式的目的是封裝一些施加於某種資料結構元素之上的操作。一旦這些操作需要修改的話,接受這個操作的資料結構則可以保持不變。一 問題 集合是大多數的系統都要處理的一種容器物件,它儲存了對其它物件的引用。一般情況下,在集合上採取的...
訪問者模式
行為模式中的訪問者模式 訪問者模式是物件的行為模式。訪問者模式的目的是封裝一些施加於某種資料結構元素之上的操作,一旦這些操作需要修改的話,接受這個操作的資料結構則可以保持不變。動機 類層次結構中可能經常由於引入新的操作,從而將型別變得脆弱。在軟體構建過程中,由於需求的改變,某些類層次結構中常常需要增...
訪問者模式
1.說明 namespace visitorspattern 象棋類 public abstract class chess public class redchess chess public class blackchess chess 在贏的情況下的狀態 public class win ac...