原网址:https://blog.csdn.net/wuzhekai1985/article/details/6673603做如下修改:
#include <iostream>
using namespace std;
class Mediator;
// 抽象人
class Person {public:virtual void SetMediator(Mediator *mediator){}//设置中介virtual void SendMessage(std::string message) {}//向中介者发送信息virtual void GetMessage(std::string message) {} //从中介者获取信息protected:Mediator *mediator_;
};//抽象中介结构
class Mediator {public:virtual void Send(std::string message, Person *person){}virtual void SetRenter(Person *renter) {} //设置租客virtual void SetLandLoad(Person *land_load) {} //设置房东
};//租房者
class Renter :public Person {public:void SetMediator(Mediator *mediator) {mediator_ = mediator;}void SendMessage(std::string message) {mediator_->Send(message, this);//在这个Send函数里会判断this是来自租房者还是房东}//房屋中介类里面调用void GetMessage(string message) {cout << "Renter Get Message"<< endl;}
};//房东
class LandLord : public Person {public:void SetMediator(Mediator *mediator) {mediator_ = mediator;}void SendMessage(std::string message) {mediator_->Send(message, this);//在这个Send函数里会判断this是来自租房者还是房东}//房屋中介类里面调用void GetMessage(string message) {cout << "LandLoad Get Message"<< endl;}
};//房屋中介
class HouseMediator : public Mediator {public:HouseMediator():renter_(NULL),land_load_(NULL) {}void SetRenter(Person *renter) {renter_ = renter;}void SetLandLoad(Person * land_load) {land_load_ = land_load;}void Send(std::string message, Person *person) {if (person == renter_) {land_load_->GetMessage(message);} else {renter_->GetMessage(message);}}private:Person *renter_;Person *land_load_;
};int main () {Mediator *mediator = new HouseMediator();Person *renter = new Renter(); //租房者Person *land_load = new LandLord(); //房东mediator->SetRenter(renter);mediator->SetLandLoad(land_load);renter->SetMediator(mediator);land_load->SetMediator(mediator);renter->SendMessage("我想在南京路附近租套房子,价格800元一个月\n");land_load->SendMessage("出租房子:南京路100号,70平米,1000元一个月\n");delete mediator;delete renter;delete land_load;return 0;
}
LandLoad Get Message
Renter Get Message

C++设计模式——中介者模式(高屋建瓴)相关推荐

  1. Python设计模式-中介者模式

    Python设计模式-中介者模式 代码基于3.5.2,代码如下; #coding:utf-8 #中介者模式class colleague():mediator = Nonedef __init__(s ...

  2. 7. 星际争霸之php设计模式--中介者模式

    题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...

  3. 【设计模式】Java设计模式 - 中介者模式

    Java设计模式 - 中介者模式

  4. 设计模式中介者模式-备忘录模式-状态模式

    设计模式 中介者模式 基本介绍 中介者模式使用一个中介对象来封装一系列的对象交互.中介者使各个对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 中介者模式属于行为模式,使 ...

  5. 设计模式-中介者模式(Mediator Pattern)

    设计模式-中介者模式(Mediator Pattern) 文章目录 设计模式-中介者模式(Mediator Pattern) 一.定义 二.概念解释 三.场景 四.实现 1.类图 2.代码实现 五.总 ...

  6. 大话设计模式—中介者模式

    中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性.这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护.中介者模式属于行为型模式. ...

  7. [设计模式]中介者模式之Events消息传递实现

    这篇文章比较短,修改自 写给大家看的设计模式之中介者中的例子 中介者模式的定义和目的自不必说, 参考上文即可. 本文针对实现方式做一个补充. 中介者模式增加了一个第三方对象(中介者)来控制两个对象(同 ...

  8. C++设计模式-中介者模式

    目录 基本概念 代码与实例 基本概念 中介者模式(Mediator)用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显示的相互作用,从而使其耦合松散,而且可以独立的改变他们之间的关系. 下面 ...

  9. 学习设计模式 - 中介者模式

    中介者模式 一丶定义 定义一个中介者对象, 封装一系列对象的交互关系, 使得各对象不必显示的相互引用, 从而使其耦合松散, 而且可以独立的改变它们的交互 二丶理解 各对象显式地持有对方引用, 用于对象 ...

  10. PHP设计模式——中介者模式

    声明:本系列博客参考资料<大话设计模式>,作者程杰. 中介者模式用一个中介者对象来封装一系列的对象交互.中介者使得各对象不需要显式地相互引用,从而使其松散耦合,而且可以独立地改变它们之间的 ...

最新文章

  1. Zend Studio添加ThinkPHP代码提示方法
  2. matlab 批量缩小图片
  3. 控制src_【聚焦】仙知机器人基于SRC的激光SLAM自动叉车,满足各类场景需求
  4. 业务系统 Over 阿里云性能压测的最佳实践
  5. Codeforces 1189B Number Circle
  6. ftk学习记(button篇)
  7. vue中的VNode
  8. 2019-06-13-vim配色步骤
  9. Javascript设计模式(二)工厂模式
  10. 从pvlib入门光伏发电系统
  11. python+nodejs+vue大学生心理健康测评管理系统
  12. TikTok运营,TikTok数据分析
  13. OpenGL绘制框架(Win32版)
  14. 【已解决】mac monterey重装系统 pkdownloaderror错误8 报错
  15. 14 metabase定制
  16. 百度云搜索引擎森林战士_华为拟安装“俄版安卓”;百度回应内部贪腐;Android Studio 3.5 RC2 发布 | 极客头条...
  17. 基于maven自动发布-Maven Wagon
  18. 华为交换机RRPP的基本配置
  19. 第三章 卡尔曼滤波 笔记
  20. 获取最近未来法定节假日的日期

热门文章

  1. 成就感和尊严,给你快乐
  2. 思科ISR4400交换机查看光模块光功率
  3. 关于微信投票的刷票分析
  4. android list sort 并删除重复点_阿博的Python之路-详解List数据类型
  5. 终于把“翻转课堂”、“微课”和“慕课”说明白了
  6. Mapper method ‘com.xxx.dao.ActivityDao.update attempted to return null from a method with a primiti
  7. C++程序设计课程主页-2013级
  8. mysql 基本语句_mysql 基本语句
  9. 【hive-3.1.3】ORC 格式的表和 text 格式的表,当分区的字段数量和表的字段数量不一致,检索结果不相同
  10. [C语言] 制作一个控制台的电子时钟