Mediator_Pattern - 8BitsCoding/RobotMentor GitHub Wiki

복잡한 관계를 간단한 관계로 간단히 변경한다.


0

1


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;
}

참고사이트

⚠️ **GitHub.com Fallback** ⚠️