Реализации на С++

Mediator

Общая реализация на языке С++

class Mediator
{
protected:
    list<shared_ptr<Colleague>> colleagues;

public:
    virtual ~Mediator() = default;

    virtual bool send(const Colleague* coleague, shared_ptr<Message> msg) = 0;

    static bool add(shared_ptr<Mediator> mediator, initializer_list<shared_ptr<Colleague>> list)
    {
        if (!mediator || list.size() == 0) return false;
    
        for (auto elem : list)
        {
            mediator->colleagues.push_back(elem);
            elem->setMediator(mediator);
        }
        return true;
    }
};
# include <iostream>
# include <memory>
# include <list>
# include <vector>

using namespace std;

int main()
{
    shared_ptr<Mediator> mediator = make_shared<ConcreteMediator>();

    shared_ptr<Colleague> col1 = make_shared<ColleagueLeft>();
    shared_ptr<Colleague> col2 = make_shared<ColleagueRight>();
    shared_ptr<Colleague> col3 = make_shared<ColleagueLeft>();
    shared_ptr<Colleague> col4 = make_shared<ColleagueLeft>();

    Mediator::add(mediator, { col1, col2, col3, col4 });

    shared_ptr<Message> msg = make_shared<Message>();

    col1->send(msg);
    col2->send(msg);
}

Last updated

Was this helpful?