表示乙個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作.
main.cc:
#include
#include
"swim_action.h"
#include
"bike_action.h"
#include
"run_action.h"
#include
"female_people.h"
#include
"male_people.h"
#include
"object_structure.h"
/*design_pattern:"visitor"
在跑團的活動中,男/女參與各種各樣的活動,對於活動有各自的評價,活動型別很有可能隨著時間不斷新增,訪問者模式,對於活動的增加擴充套件性極好
游泳: 男人可以看美女,女人可以秀身材
跑步: 男人覺得大汗淋淋,很舒服,女人覺得又累又無聊
騎行: 男人覺得乙個人騎車,好無聊!,女生很享受沿途的風景
*/int main()
people:
#ifndef helendp_source_people_h_
#define helendp_source_people_h_
#include "action.h"
class
people;
#endif
#include "people.h"
people::people()
people::~people()
femalpeople:
//femal_people.h
#ifndef helendp_source_female_people_h_
#define helendp_source_female_people_h_
#include "people.h"
class
femalepeople : public
people;
#endif
//femal_people.cc
#include "female_people.h"
femalepeople::femalepeople()
femalepeople::~femalepeople()
void femalepeople::join(action *action)
malepeople:
//male_people.h
#ifndef helendp_source_male_people_h_
#define helendp_source_male_people_h_
#include "people.h"
class
malepeople : public
people;
#endif
//male_people.cc
#include "male_people.h"
malepeople::malepeople()
malepeople::~malepeople()
void malepeople::join(action *action)
objectstructure:
//object_structure.h
#ifndef helendp_source_object_structure_h_
#define helendp_source_object_structure_h_
#include "people.h"
#include "action.h"
#include
using
namespace
std;
class objectstructure;
#endif
//object_structure.cc
#include "object_structure.h"
objectstructure::objectstructure()
objectstructure::~objectstructure()
void objectstructure::add(people *people)
void objectstructure::remove(people * people)
void objectstructure::feedback(action *action)
}
action:
#ifndef helendp_source_action_h_
#define helendp_source_action_h_
class malepeople;
class femalepeople;
class action;
#endif
#include "action.h"
action::action()
action::~action()
bikeaction:
//bike_action.h
#ifndef helendp_source_bike_action_h_
#define helendp_source_bike_action_h_
#include "action.h"
class bikeaction : public action;
#endif
//bike_action.cc
#include "bike_action.h"
#include
using
namespace
std;
bikeaction::bikeaction()
bikeaction::~bikeaction()
void bikeaction::getmalefeedback(malepeople * male_people)
void bikeaction::getfemalefeedback(femalepeople * female_people)
runaction:
//runner_action.h
#ifndef helendp_source_run_action_h_
#define helendp_source_run_action_h_
#include "action.h"
class runaction : public action;
#endif
//runner_action.cc
#include "run_action.h"
#include
using
namespace
std;
runaction::runaction()
runaction::~runaction()
void runaction::getmalefeedback(malepeople * male_people)
void runaction::getfemalefeedback(femalepeople * female_people)
swimaction:
//swim_action.h
#ifndef helendp_source_swim_action_h_
#define helendp_source_swim_action_h_
#include "action.h"
class swimaction : public action;
#endif
//swim_action.cc
#include "swim_action.h"
#include
using
namespace
std;
swimaction::swimaction()
swimaction::~swimaction()
void swimaction::getmalefeedback(malepeople * male_people)
void swimaction::getfemalefeedback(femalepeople * female_people)
**和uml圖(ea)工程檔案,最後會整理打包上傳.
行為型模式十九 訪問者模式(Visitor)
表示乙個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素類的前提下定義作用於這些元素的新操作。表示乙個作用於某物件結構中的各元素的操作,它使你可以在不改變各元素類的前提下定義作用於這些元素的新操作。1.visitor 抽象訪問者角色,為該物件結構中具體元素角色宣告乙個訪問操作介面。該操作介...
行為型模式 11 訪問者模式Visitor
訪問者模式俗稱23大設計模式中最難的乙個。除了結構複雜外,理解也比較難。在我們軟體開發中我們可能會對同乙個物件有不同的處理,如果我們都做分別的處理,將會產生災難性的錯誤。對於這種問題,訪問者模式提供了比較好的解決方案。訪問者模式即表示乙個作用於某物件結構中的各元素的操作,它使我們可以在不改變各元素的...
訪問者模式(Visitor) 行為筆記
訪問者模式 visitor 表示乙個作用於某物件結構中的各元素的操作,它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。適用於資料結構相對穩定的系統!一 涉及角色 抽象訪問者 visitor 宣告了乙個或多個訪問操作,形成所有的具體元素角色必須實現的介面 具體訪問者 concretev...