Mediator 中介者模式
中介者模式主要用于对象之间的通信
Mediator.h文件:
#include "stdafx.h"
#include
#include
#include
#include
#include
#include using namespace boost;typedef std::string ColleageAData;
typedef long ColleageBData;class Mediator;class Colleage
{
protected:shared_ptr _m_mediator;
};class ColleageA : public Colleage
{
public:ColleageA(){m_data = "asdf";m_recvBData = 0;};void setMediator(shared_ptr mediator);void sendDataToColleageB(ColleageAData data);void setData(ColleageAData data){m_data = data;}ColleageAData getData(){return m_data;}void showInfo(){std::cout << "A:" << m_data << "B:" << m_recvBData << std::endl;}
public:ColleageBData m_recvBData;ColleageAData m_data;
};class ColleageB : public Colleage
{
public:ColleageB(){m_data = 1113;m_recvAData = "null";}void setMediator(shared_ptr mediator);void sendDataToColleageA(ColleageBData data);void setData(ColleageBData data){m_data = data;}ColleageBData getData(){return m_data;}void showInfo(){std::cout << "B:" << m_data << "A:" << m_recvAData << std::endl;}
public:ColleageAData m_recvAData;ColleageBData m_data;
};class Mediator
{
public:Mediator(){}virtual ~Mediator(){}Mediator(shared_ptr a,shared_ptr b){_m_A = a;_m_B = b;}void AsendtoB(ColleageAData dataA);void BsendtoA(ColleageBData dataB);void setA(shared_ptr a){_m_A = a;}void setB(shared_ptr b){_m_B = b;}protected://该中介者用于处理A和Bshared_ptr _m_A;shared_ptr _m_B;
}; Mediator.cpp文件:
#include "stdafx.h"
#include
#include
#include
#include
#include
#include
#include "Mediator.h"using namespace boost;void Mediator::AsendtoB(ColleageAData dataA)
{_m_B->m_recvAData = dataA;
}void Mediator::BsendtoA(ColleageBData dataB)
{_m_A->m_recvBData = dataB;
}
void ColleageA::setMediator(shared_ptr mediator)
{_m_mediator = mediator;
}
void ColleageA::sendDataToColleageB(ColleageAData data)
{_m_mediator->AsendtoB(data);
}
void ColleageB::setMediator(shared_ptr mediator)
{_m_mediator = mediator;
}
void ColleageB::sendDataToColleageA(ColleageBData data)
{_m_mediator->BsendtoA(data);
}void testMediatorMode()
{shared_ptr a = make_shared();auto b = make_shared();auto mediator = make_shared();a->setMediator(mediator);b->setMediator(mediator);mediator->setA(a);mediator->setB(b);a->showInfo();b->showInfo();a->sendDataToColleageB(a->getData());a->showInfo();b->showInfo();b->sendDataToColleageA(b->getData());a->showInfo();b->showInfo();
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
