C语言和设计模式(中介者模式)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
中介者模式,听上去有一点陌生。但是,只要我给朋友们打个比方就明白了。早先自由恋爱没有现在那么普遍的时候,男女之间的相识还是需要通过媒婆之间才能相互认识。男孩对女方有什么要求,可以通过媒婆向女方提出来;当然,女方有什么要求也可以通过媒婆向男方提出来。所以,中介者模式在我看来,就是媒婆模式。
typedef struct _Mediator
{People* man;People* woman;
}Mediator;
上面的数据结构是给媒婆的,那么当然还有一个数据结构是给男方、女方的。
typedef struct _People
{Mediator* pMediator;void (*request)(struct _People* pPeople);void (*process)(struct _Peoplle* pPeople);
}People;
所以,这里我们看到的如果是男方的要求,那么这个要求应该女方去处理啊,怎么处理呢?
void man_request(struct _People* pPeople)
{assert(NULL != pPeople);pPeople->pMediator->woman->process(pPeople->pMediator->woman);
}
上面做的是男方向女方提出的要求,所以女方也可以向男方提要求了。毕竟男女平等嘛。
void woman_request(struct _People* pPeople)
{assert(NULL != pPeople);pPeople->pMediator->man->process(pPeople->pMediator->man);
}
C语言和设计模式(中介者模式)相关推荐
- 设计模式中介者模式-备忘录模式-状态模式
设计模式 中介者模式 基本介绍 中介者模式使用一个中介对象来封装一系列的对象交互.中介者使各个对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 中介者模式属于行为模式,使 ...
- Python设计模式-中介者模式
Python设计模式-中介者模式 代码基于3.5.2,代码如下; #coding:utf-8 #中介者模式class colleague():mediator = Nonedef __init__(s ...
- 7. 星际争霸之php设计模式--中介者模式
题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...
- 【设计模式】Java设计模式 - 中介者模式
Java设计模式 - 中介者模式
- 设计模式-中介者模式(Mediator Pattern)
设计模式-中介者模式(Mediator Pattern) 文章目录 设计模式-中介者模式(Mediator Pattern) 一.定义 二.概念解释 三.场景 四.实现 1.类图 2.代码实现 五.总 ...
- [设计模式] - 中介者模式
文章目录 一.中介者模式简介 1. 什么是中介者模式 2. 业务说明 3. 不使用中介者模式的代码实现 二.中介者模式的实现 1. 设计思路 2. 代码实现 三.中介者模式总结 1. 中介者模式的特点 ...
- 大话设计模式—中介者模式
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性.这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护.中介者模式属于行为型模式. ...
- [设计模式]中介者模式之Events消息传递实现
这篇文章比较短,修改自 写给大家看的设计模式之中介者中的例子 中介者模式的定义和目的自不必说, 参考上文即可. 本文针对实现方式做一个补充. 中介者模式增加了一个第三方对象(中介者)来控制两个对象(同 ...
- C++设计模式-中介者模式
目录 基本概念 代码与实例 基本概念 中介者模式(Mediator)用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显示的相互作用,从而使其耦合松散,而且可以独立的改变他们之间的关系. 下面 ...
- 学习设计模式 - 中介者模式
中介者模式 一丶定义 定义一个中介者对象, 封装一系列对象的交互关系, 使得各对象不必显示的相互引用, 从而使其耦合松散, 而且可以独立的改变它们的交互 二丶理解 各对象显式地持有对方引用, 用于对象 ...
最新文章
- 不用任何程序就可锁住和隐藏你的文件
- EF 4.1中内部经常提交的 exec sp_reset_connection 的用途原来是为了重用池中的连接...
- 汇编语言--CPU对外设的控制
- vue ...mapMutations 的第一个参数默认为 数据对象state
- 区块链学堂(7):Geth 搭建私有网络-实战
- Graphpad Prism 9绘制子列图与柱状图
- 分区供水条件口诀_经典口诀2020年一建市政管道篇
- [mybatis]映射文件_参数处理_#取值时指定参数相关规则
- 四年级学生计算机学情分析报告,四年级学情分析
- linux 磁盘检测卡主_在Windows和Linux中找出磁盘分区使用的文件系统,就是这么简单...
- PHP培训领航者兄弟连IT教育推出兄弟会教育模式
- [硬件基础]开关电源和线性稳压器的优缺点?
- decorview、window、dialog关系详解
- 读书记录|《所罗门王的指环》
- #二、股价和时间转换(江恩箱)
- matlab dff求导,matlab的多元函数微积分学.ppt
- 想要健康, 先了解BMI与体脂肪的关係
- Algorithm保姆级笔记(基础+提高+Top1+杂题+Top2+蓝桥杯)
- ETL工程师系列课程_Oracle数据库
- Linux/Centos安装oracle11超详细图文教程