#include <iostream>
using namespace std;
class ObjectA
{
public:
void Whoami() { cout<<"ObjectA"<<endl; }
};
class ObjectB
{
public:
void Whoami() { cout<<"ObjectB"<<endl; }
};
class ObjectC
{
public:
void Whoami() { cout<<"ObjectC"<<endl; }
};
class Mediator
{
public:
void Set(ObjectA* pObjectA, ObjectB* pObjectB, ObjectC* pObjectC) { m_pObjectA = pObjectA; m_pObjectB = pObjectB; m_pObjectC = pObjectC; }
void Interact1() { m_pObjectA->Whoami(); m_pObjectB->Whoami(); }
void Interact2() { m_pObjectB->Whoami(); m_pObjectC->Whoami(); }
void Interact3() { m_pObjectA->Whoami(); m_pObjectC->Whoami(); }
private:
ObjectA* m_pObjectA;
ObjectB* m_pObjectB;
ObjectC* m_pObjectC;
};
int main(int argc, char *argv[])
{
ObjectA objA;
ObjectB objB;
ObjectC objC;
Mediator mediator;
mediator.Set(&objA, &objB, &objC);
mediator.Interact1();
mediator.Interact2();
mediator.Interact3();
return ;
}