Mediator
#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 0; }