表示乙個作用於某物件結構的各元素的操作。它使你可以再不改變各元素的類的前提下定義作用於這些元素的新操作
案例:假設你的電腦(element)壞了,找售後,售後告訴你需要拆機檢測,檢測過程由兩個技術人員(visitor)依次負責不同功能的檢測。電腦的部件是固定的,不會有太大的改變,但是如果一種檢測方式沒有找出問題的話,那麼就需要增加檢測項。符合訪問者模式的特點。
#include #include #include using namespace std;
class element;
class cpu;
class mainboard;
class visitor
string get_name()
virtual void visite_cpu(cpu* cpu) = 0;
virtual void visite_mainboard(mainboard* mainboard) = 0;
private:
string m_visitor_name;
};// 電腦部件
class element
virtual void accept(visitor* visitor) = 0;
virtual std::string getname()
private:
std::string m_element_name;
};class cpu : public element
void accept(visitor* visitor)
};class mainboard : public element
void accept(visitor* visitor)
};class circuitvisitor : public visitor
void visite_cpu(cpu* cpu)
void visite_mainboard(mainboard* mainboard) };
class functionvisitor : public visitor
void visite_cpu(cpu* cpu)
void visite_mainboard(mainboard* mainboard) };
class computer
; void accept(visitor* visitor)
};private:
std::vectorpelementlist;
};void test_01()
int main()
訪問者模式
訪問者模式 visitor pattern 訪問者模式是物件的行為模式。訪問者模式的目的是封裝一些施加於某種資料結構元素之上的操作。一旦這些操作需要修改的話,接受這個操作的資料結構則可以保持不變。一 問題 集合是大多數的系統都要處理的一種容器物件,它儲存了對其它物件的引用。一般情況下,在集合上採取的...
訪問者模式
行為模式中的訪問者模式 訪問者模式是物件的行為模式。訪問者模式的目的是封裝一些施加於某種資料結構元素之上的操作,一旦這些操作需要修改的話,接受這個操作的資料結構則可以保持不變。動機 類層次結構中可能經常由於引入新的操作,從而將型別變得脆弱。在軟體構建過程中,由於需求的改變,某些類層次結構中常常需要增...
訪問者模式
1.說明 namespace visitorspattern 象棋類 public abstract class chess public class redchess chess public class blackchess chess 在贏的情況下的狀態 public class win ac...