c 訪問者模式

2021-07-10 08:53:26 字數 2404 閱讀 2122

//寫個基類

#ifndef employee_hpp

#define employee_hpp

#define cc_synthesize(vartype, varname, funname)\

protected: vartype varname;\

public: virtual vartype get##funname(void) const \

public: virtual void set##funname(vartype var)

#include #include #include "ivisiter.hpp"

using namespace std;

class employee ;

employee(string name,int age): name(name),age(age) {};

~employee() {};

cc_synthesize(string, name , name);

cc_synthesize(int,age,age);

cc_synthesize(ivisiter* , visiter, visiter);

virtual void showinfo();

virtual void visit();

};#endif /* employee_hpp */

#include "employee.hpp"

void employee::showinfo()

void employee::visit()

//繼承基類manager管理層類

#ifndef manager_hpp

#define manager_hpp

#include "employee.hpp"

using namespace std;

class manager: public employee ;

manager(string name,int age): name(name),age(age) {};

~manager() {};

virtual void showinfo();

cc_synthesize(string, name , name);

cc_synthesize(int,age,age);

};#endif /* manager_hpp */

#include "manager.hpp"

void manager::showinfo()

//繼承基類commonemployee普通員工層類

#ifndef commonemployee_hpp

#define commonemployee_hpp

#include "employee.hpp"

using namespace std;

class commonemployee: public employee ;

commonemployee(string name,int age): name(name),age(age) {};

~commonemployee() {};

virtual void showinfo();

cc_synthesize(string, name , name);

cc_synthesize(int,age,age);

};#endif /* commonemployee_hpp */

#include "commonemployee.hpp"

void commonemployee::showinfo()

//繼承基類ivisiter訪問者介面

#ifndef ivisiter_hpp

#define ivisiter_hpp

#include class employee; //由於employee於ivisiter標頭檔案定義相互包含 所以以class定義 在cpp檔案再引入

class ivisiter ;

~ivisiter() {};

virtual void visit(employee* emp);

};#endif /* ivisiter_hpp */

#include "ivisiter.hpp"

#include "manager.hpp"

#include "employee.hpp"

void ivisiter::visit(employee* emp)

/* 訪問者模式

*/#include #include "ivisiter.hpp"

#include "manager.hpp"

#include "commonemployee.hpp"

int main(int argc, constchar * argv)

C 訪問者模式

訪問者模式 訪問者模式 visitor 表示乙個作用於某個物件結構中各元素的操作,它使你可以再不改變各元素類的前提下定義作用於這些元素的新操作。結構圖 圖 using system using system.collections.generic using system.linq using sy...

訪問者模式

訪問者模式 visitor pattern 訪問者模式是物件的行為模式。訪問者模式的目的是封裝一些施加於某種資料結構元素之上的操作。一旦這些操作需要修改的話,接受這個操作的資料結構則可以保持不變。一 問題 集合是大多數的系統都要處理的一種容器物件,它儲存了對其它物件的引用。一般情況下,在集合上採取的...

訪問者模式

行為模式中的訪問者模式 訪問者模式是物件的行為模式。訪問者模式的目的是封裝一些施加於某種資料結構元素之上的操作,一旦這些操作需要修改的話,接受這個操作的資料結構則可以保持不變。動機 類層次結構中可能經常由於引入新的操作,從而將型別變得脆弱。在軟體構建過程中,由於需求的改變,某些類層次結構中常常需要增...