Реализации на С++
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?