Mediator_Pattern - 8BitsCoding/RobotMentor GitHub Wiki
복잡한 관계를 간단한 관계로 간단히 변경한다.
class Mediator {
protected:
List<Colleague> colleagues;
public:
bool addColleague(Colleague colleague) {
if(colleagues != null) {
return colleagues.add(colleague);
}
else
{
return false;
}
}
virtual void mediate(string data);
};
class Colleague {
private:
Mediator* mediator;
public:
bool join(Mediator* mediator) {
this->mediator = mediator;
return mediator->addColleague(this);
}
void sendData(string data) {
if(!mediator)
{
return mediator->mediate(data);
}
else
{
return false;
}
}
virtual void handle(string data);
};
class ChatMediator : public Mediator {
public:
virtual void mediate(string data) {
colleagues->handle(data);
}
};
class ChatColleague : public Colleague {
public:
virtual void handle(string data) {
// 구현
}
};
int main() {
Mediator* mediator = new ChatMediator();
Colleague* colleague1 = new ChatColleague();
Colleague* colleague2;
Colleague* colleague3;
colleague1->join(mediator);
colleague2->join(mediator);
colleague3->join(mediator);
colleague1->sendData("AA1");
colleague2->sendData("AA2");
colleague3->sendData("AA3");
delete mediator;
delete colleague1;
delete colleague2;
delete colleague3;
}