学习笔记:中介者模式
模式简介
:属于行为型模式,用来降低多个对象相互通信的复杂度。
为什么用
:解耦解耦,使得对象之间不必显式的相互引用。
怎么样用
:把每个需要通信的类的数据写到一个中介者的类中,通信类调用中介者类的方法实现数据传递和功能实现。
注意事项
:方法一般定义成静态好使用一点。
实际举例
:游戏各种消息的展示。
#include <iostream>
using namespace std;
//中介者-信息展示栏
class Mediator {
public:
static void show_person(string name,string message) {
cout << name << ":" << message << "\n";
}
static void show_fight(string message) {
cout <<"fight" <<":"<<message << "\n";
}
};
//人物类
class Person {
private:
string name;
public:
friend class Fight;
Person(string _name) {
this->name = _name;
}
void show(string message) {
Mediator::show_person(name,message);
}
};
//战斗类
class Fight {
private:
Person* person1,*person2;
public:
Fight(Person *person1,Person *person2) {
this->person1 = person1;
this->person2= person2;
}
void display() {
Mediator::show_fight(person1->name+" attacked "+person2->name);
}
};
int main(){
//实际信息的显示全部由中介者代替
//人物
Person *person1=new Person("moota");
Person* person2 = new Person("vicky");
person1->show("Hi");
person2->show("Hi,nice to meet you!");
//战斗
Fight *fight=new Fight(person1,person2);
fight->display();
return 0;
}