学习笔记:访问者模式
模式简介
:属于行为型模式,元素对象接受访问者对象,访问者处理元素对象的操作。
为什么用
:解决稳定的数据结构和易变的操作耦合的问题。
怎么样用
:在访问者类直接使用元素对象的元素进行操作。
注意事项
:数据访问的合法性。
实际举例
:UI管理游戏全局设置。
#include <iostream>
using namespace std;
//设置
class Setting {};
//音乐设置
class Setting_Music :public Setting {
private:
string music;
string volume;
public:
friend class UI;
Setting_Music() {
this->music = "jack";
this->volume = "100";
}
void visit() {
cout << "设置了music\n";
}
};
//图像设置
class Setting_Image :public Setting {
private:
string quality;
public:
friend class UI;
Setting_Image() {
this->quality = "reality";
}
void visit() {
cout << "设置了image quality\n";
}
};
//语言设置
class Setting_Language {
private:
string language;
public:
friend class UI;
Setting_Language() {
this->language = language;
}
void visit() {
cout << "设置了language\n";
}
};
//UI界面
class UI {
public:
void visit(Setting_Music* music) {
music->visit();
//TODO
}
void visit(Setting_Image* image) {
image->visit();
//TODO
}
void visit(Setting_Language* language) {
language->visit();
//TODO
}
};
int main() {
Setting_Music* music=new Setting_Music();
Setting_Image* image =new Setting_Image();
Setting_Language* language=new Setting_Language();
UI*ui=new UI();
cout << "---setting---\n";
//进行访问
ui->visit(music);
ui->visit(image);
ui->visit(language);
return 0;
}