c++之中介者模式
发布日期:2021-09-25 21:40:59 浏览次数:2 分类:技术文章

本文共 1536 字,大约阅读时间需要 5 分钟。

中介者模式属于行为型模式。

定义:采用一个中介对象来封装一系列的对象交互。

优点:使得各个对象不需要显式的相互引用,达到解耦的效果。

UML类图

栗子场景:买房和卖房都担心被骗,然后通过房产中介做交互

代码

#include 
#include
using namespace std;class HousePerson;class BuyHousePerson;class SellHousePerson;//抽象中介类class Mediator{public: virtual void sendMessage(string msg, HousePerson *p) = 0;};//抽象炒房客class HousePerson{public: HousePerson(Mediator *mediator) { m_mediator = mediator; }protected: Mediator *m_mediator;};//买房的人class BuyHousePerson :public HousePerson{public: BuyHousePerson(Mediator *mediator) :HousePerson(mediator){} void sendMsg(string msg) { m_mediator->sendMessage(msg,this); } void notify(string msg) { cout << "买房者得到消息:" << msg << endl; }};//卖房的人class SellHousePerson :public HousePerson{public: SellHousePerson(Mediator *mediator) :HousePerson(mediator){} void sendMsg(string msg) { m_mediator->sendMessage(msg, this); } void notify(string msg) { cout << "卖-房者得到消息:" << msg << endl; }};//具体中介类class ConcreteMediator :public Mediator{public: void sendMessage(string msg, HousePerson *p) { if (p == bh) { sh->notify(msg); } else { bh->notify(msg); } }public: BuyHousePerson *bh; SellHousePerson *sh;};//客户端int main(){ ConcreteMediator *pM = new ConcreteMediator; BuyHousePerson *pBh = new BuyHousePerson(pM); SellHousePerson* pSh = new SellHousePerson(pM); pM->bh = pBh; pM->sh = pSh; pBh->sendMsg("卖不卖,一口价780W"); pSh->sendMsg("不卖,至少800W!"); if (pM) { delete pM; pM = nullptr; } if (pBh) { delete pBh; pBh = nullptr; } if (pSh) { delete pSh; pSh = nullptr; } return 0;}

效果:

转载地址:https://blog.csdn.net/c_shell_python/article/details/107543350 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:c++之职责链模式
下一篇:c++之命令模式

发表评论

最新留言

不错!
[***.144.177.141]2024年03月28日 13时21分22秒