訪問者visitor模式:乙個作用於某物件結構中的各元素的操作,可用於在不改變各元素的前提下定義作用於這些元素的新操作。
c++11通過可變引數模板,實現乙個穩定的介面層,利用可變引數模板的特點,可以讓訪問者介面層訪問任意個數的訪問者,不需要每增加乙個新的訪問者就修改介面層。
#include #include #include using namespace std;
templatestruct visitor;
templatestruct visitor: visitor;
templatestruct visitor;
//測試**
struct sta;
struct stb;
struct base
當被訪問者需要增加stc、std和ste時,只需要定義乙個新的型別
typedef visitormytvisitor; 該型別就會自動生成訪問介面
struct visitor
*/typedef visitormytvisitor;
virtual void accept(mytvisitor&)=0;
};struct sta: base
};struct stb: base
};struct printvisitor:base::mytvisitor
C 設計模式 訪問者模式
表示乙個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素類的前提下定義作用於這些元素的新操作。1.visitor 抽象訪問者角色,為該物件結構中具體元素角色宣告乙個訪問操作介面。該操作介面的名字和引數標識了傳送訪問請求給具體訪問者的具體元素角色,這樣訪問者就可以通過該元素角色的特定介面直接...
C 設計模式 訪問者模式
1 訪問者模式定義 表示乙個作用於其物件結構中的各個元素的操作。訪問者模式是一種物件行為型模式,它為操作儲存不同的型別元素的物件結構提供了一種解決方案,使用者可以對不同型別的元素施加不同的操作。訪問者模式常常和組合模式一起使用。2 訪問者模式結構 該模式包含五種角色 1 抽象訪問者類 visitor...
C 設計模式 訪問者模式
一.介紹 訪問者模式 visitor pattern 屬於行為型模式。表示乙個作用於某物件結構中的各元素的操作,它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。二.實現 舉個例子,如果有元素a b類,想呼叫這些元素中的print方法,很簡單地,只要例項化去呼叫就可以。public a...