[设计模式]8. C++与中介者模式(mediator pattern)
意图:用一个中介者对象封装一系列的对象交互。中介者使各对象不需要显式的相互引用,从而减小耦合。
原文:默默的EEer
地址:http://www.cnblogs.com/hebaichuanyeah/p/6091506.html
实际就是指,利用一个中介者对象来连接两个对象的操作。例如需求是,A对象更新/改变了,B对象也跟着相应的更新/改变,不通过直接调用B对象
一个例子,详见注释
#include <iostream>using namespace std;class Colleague;//定义一个中介者接口,包含对象改变所需调用函数。 class Mediator { public :virtual ~Mediator(){}virtual void changed(Colleague *)=0;};//定义"同事"类接口,初始化需要一个中介者对象,并通过该类更新另外一个"同事" class Colleague { public ://初始化中介者类对象Colleague(Mediator * mediator){this->mediator =mediator;}//更新另外一个类virtual void changed(){mediator->changed(this);} private:Mediator *mediator; };//具体的同事类1 class ConcreteColleague1 :public Colleague { public:ConcreteColleague1(Mediator * mediator):Colleague(mediator){}void update(){cout<<"update ConcreteColleague1 from ConcreteColleague2"<<endl;} }; //具体的同事类2 class ConcreteColleague2 :public Colleague { public :ConcreteColleague2(Mediator * mediator):Colleague(mediator){}void update(){cout<<"update ConcreteColleague2 from ConcreteColleague1"<<endl;} };//具体的中介者类,实现更新函数changed。 class ConcreteMediator :public Mediator { private:ConcreteColleague1 * colleague1;ConcreteColleague2 * colleague2; public:void setColleague1(ConcreteColleague1 * colleague){colleague1 = colleague;}void setColleague2(ConcreteColleague2 * colleague){colleague2 = colleague;}ConcreteMediator(){//colleague1 = new ConcreteColleague1(this); }~ConcreteMediator(){}virtual void changed(Colleague* colleague){if(colleague == colleague1){colleague2->update();}else if(colleague == colleague2){colleague1->update();}else;}}; main() {ConcreteMediator concreteMediator;ConcreteColleague1 colleague1(&concreteMediator);ConcreteColleague2 colleague2(&concreteMediator);concreteMediator.setColleague1(&colleague1);concreteMediator.setColleague2(&colleague2);//"同事1"通过中介者更新"同事2" colleague1.changed();//"同事2"通过中介者更新"同事1" colleague2.changed();}
转载于:https://www.cnblogs.com/hebaichuanyeah/p/6091506.html
[设计模式]8. C++与中介者模式(mediator pattern)相关推荐
- 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern)
[索引页] [源码下载] 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern) 作者:webabcd 介绍 用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式地相互 ...
- 设计模式-中介者模式(Mediator Pattern)
设计模式-中介者模式(Mediator Pattern) 文章目录 设计模式-中介者模式(Mediator Pattern) 一.定义 二.概念解释 三.场景 四.实现 1.类图 2.代码实现 五.总 ...
- PHP设计模式之中介者模式(Mediator Pattern)了解下
咱们先来看下中介者模式(Mediator Pattern)的定义,它就是,用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互, ...
- java中介者模式例子_Java中介者模式(Mediator Pattern)
本篇文章帮大家学习java中介者模式(Mediator Pattern),包含了Java中介者模式(Mediator Pattern)使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以 ...
- 7.7 中介者模式(Mediator Pattern)
一. 定义 在现实生活中,常出现多个对象之间存在复杂的交互关系,这种交互关系常常是"网状结构",要求每个对象都必须知道它需要交互的对象.如:每个人必须记住他所有朋友的电话,若朋友中 ...
- [设计模式] 17 中介者模式 Mediator Pattern
在GOF的<设计模式:可复用面向对象软件的基础>一书中对中介者模式是这样说的:用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变 ...
- 设计模式之中介者模式---Mediator Pattern
模式的定义 中介者模式定义如下: Define an object that encapsulates how a set of objects interact.Mediator promotes ...
- 设计模式之中介者模式(Mediator Pattern)
中介者模式定义 Define an object that encapsulates how a set of objects interact. Mediator promotes loose co ...
- 【23种设计模式】中介者模式(Mediator Pattern) .Net Core实现
文章目录 简介 伪代码演示 简单实现 使用MediatR实现中介者模式 来源 简介 中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性.这种模式提供了一个中介类,该类 ...
最新文章
- 公开处刑:PapersWithCode上线“论文复现报告”,遏制耍流氓行为!
- EIGRP-2(EIGRP的路由认证)
- android原理揭秘系列之VacantCell缓存
- 为什么在EOS上的DApp对开发人员来说不盈利?
- 搭建MyBatis操作数据库
- 《追风行动》有点儿意思
- 基于反射机制的服务代理调用
- 20155225 2006-2007-2 《Java程序设计》第四周学习总结
- linux如何安装交叉工具链,Linux:制作mipsel 交叉工具链 (更新版)
- Centos7 Kubernetes(k8s) 开发服务器(单服务器)部署 nacos
- CSL:圆形平滑标签的任意方向目标检测
- 十一. MySQL InnoDB 三大特性之 BufferPool
- Unity Json 编写及读取
- 44岁万达女高管跳楼:摧毁一个中年人有多容易!
- torch.sort()用法
- xftp本地同步到服务器文件夹,如何停止Xftp更新和同步浏览服务器?
- 前端头像上传功能实现之base64图片/头像上传 详细解析2【扩展知识FileReader对象】
- 【C++】(二) 类和对象的定义与使用
- c语言 存款利息计算,1000元,存5年,求五种方案存款五年后的本息和
- RabbitMQ学习笔记和AMQP协议浅析
热门文章
- 相对于硬件计算机软件就是,计算机的软件是将解决问题的方法,软件是相对于硬件来说的...
- javase哪部分最难_抖音拍哪方面的视频容易涨粉呢?抖音现在拍什么题材容易火?...
- 阿里云 Serverless 助力企业全面拥抱云原生
- oracle常用的监控,oracle常用性能监控及优化语句
- mc有什么红石机器人_mc:作为一个mc萌新应该掌握哪些基本功?还需要知道些什么?...
- 前端iframe 能指定本地网页吗_微前端的技术拆分方式
- jsonhandle主界面没有显示格式_怎么将图纸导出成图片格式保存
- 华北科技学院计算机系综合性实验,华北科技学院计算机系综合性实验.doc
- mysql1526错误_mysql 分区 1526错误
- VINS-Mono关键知识点总结——前端详解