中介者模式中,个体与个体之间不需要发生直接关联,而是只需要与中介者进行交互,并由中介完成一系列任务。

Mediator.h内容

 1 #ifndef Mediator_H_H
 2 #define Mediator_H_H
 3
 4 #include <iostream>
 5 using namespace std;
 6
 7 class Student;
 8
 9 class Mediator
10 {
11 public:
12     Mediator() : src(NULL), target(NULL) {}
13     void send(string strMessage);
14     void setTarget(Student *target0) { target = target0; }
15
16 private:
17     Student *src, *target;
18 };
19
20 class Student
21 {
22 public:
23     Student() : mediator(NULL) {}
24     virtual void recvMessage(string strMessage) = 0;
25     virtual ~Student() {}
26     void sendMessage(Student *student, string strMessage){
27         mediator->setTarget(student);
28         mediator->send(strMessage);
29     }
30     void setMediator(Mediator *mediator0) { mediator = mediator0; }
31
32 protected:
33     Mediator *mediator;
34
35 };
36
37 class Student1 : public Student
38 {
39 public:
40     virtual void recvMessage(string strMessage){
41         cout << "Student1 recv: " << strMessage << endl;
42     }
43 };
44
45 class Student2 : public Student
46 {
47 public:
48     virtual void recvMessage(string strMessage){
49         cout << "Student2 recv: " << strMessage << endl;
50     }
51
52 };
53
54
55 void Mediator::send(string strMessage)
56 {
57     target->recvMessage(strMessage);
58 }
59
60
61 void MediatorTest()
62 {
63     Student *student1 = new Student1();
64     Student *student2 = new Student2();
65     Mediator *mediator = new Mediator();
66     student1->setMediator(mediator);
67     student2->setMediator(mediator);
68
69     student1->sendMessage(student2, "How are you?");
70     student2->sendMessage(student1, "Very well, Thank you!");
71
72     delete mediator;
73
74     delete student1;
75     delete student2;
76
77 }
78
79
80 #endif

运行结果:

创建两个student,他们通过中介者实现了交互过程。

转载于:https://www.cnblogs.com/MiniHouse/p/3983341.html

设计模式12——中介者模式相关推荐

  1. 走穿java23种设计模式--18中介者模式详解

    走穿java23种设计模式–18中介者模式详解 中介者模式也称调停者模式,是一种比较简单的模式. 一.中介者模式的现实场景 蔡良因为上次表白时对方只看重他的物质方面,所以他对女朋友这个问题有点失望.因 ...

  2. 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern)

    [索引页] [源码下载] 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern) 作者:webabcd 介绍 用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式地相互 ...

  3. 设计模式(中介者模式-对象去耦)

    声明:本系列文章内容摘自<iOS设计模式> 中介者模式 用一个对象来封装一系列对象的交互方式.中介者使个对象不需要显式地相互调用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 何时 ...

  4. Java设计模式之中介者模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

  5. 软件设计模式之中介者模式实验

    软件设计模式之中介者模式实验 一.实验目的 掌握软件设计模式中的中介者模式,能够用中介者模式编写程序,解决实际问题. 二.实验内容与要求 内容:有个租房中介为房主和租赁人提供租房服务,请用中介者模式对 ...

  6. 设计模式之中介者模式(Mediator)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  7. 设计模式复习-中介者模式

    #pragma once #include "stdafx.h" #include<map> #include<set> #include<strin ...

  8. 【设计模式】中介者模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

    文章目录 一.中介者模式简介 二.中介者模式适用场景 三.中介者模式优缺点 四.中介者模式 与 观察者模式 五.中介者模式 代码示例 1.聊天室 2.用户 3.运行实例 一.中介者模式简介 中介者模式 ...

  9. 再起航,我的学习笔记之JavaScript设计模式23(中介者模式)

    中介者模式 概念介绍 中介者模式(Mediator):通过中介者对象封装一系列对象之间的交互,使对象之间不再相互引用降低他们之间的耦合,有时中介者对象也可以改变对象之间的交互. 创建一个中介 中介者模 ...

最新文章

  1. 如何在dnn禁止复制的问题
  2. 2. Oracle 数据库实例启动关闭过程
  3. python怎么调用函数的返回值类型,10、Python基础之函数的调用与返回值
  4. 【Luogu】P3224永无乡(splay)
  5. 原生sql 查询返回一个实体_python连接SQLServer执行给定的查询SQL语句,并返回结果数据...
  6. android r 编译找不到头文件_kOS(1):编译
  7. 用Python爬取Bilibili上二次元妹子的视频
  8. Ubuntu 16.04 LTS 在anaconda环境下安装pytorch和tensorflow gpu,cuda10.0
  9. 前端开发常见的浏览器兼容性问题?
  10. mac怎么配置php开发环境变量,Mac M1安装mnmp(Mac+Nginx+MySQL+PHP)开发环境
  11. 【英语学习】【加州教材】【G2】【科学】Science目录及术语表
  12. HDU 5972 Regular Number
  13. class文件的加载过程
  14. Apple Developer会员注册以及续订“支付授权失败...”问题
  15. matlab 开4次方根,matlab中计算四次方方程a*x^4+b*x+c=0的实数根.
  16. 算高差改正数的计算机程序,水准测量中的高差改正数应该怎么算?我们是六个点,而且每次只能观测两个点,也就是有六个测段...
  17. PDF在线预览插件汇总与方案总结
  18. NLPer福利-中文语言理解基准测【CLUEbenchmark】
  19. mysql 查询分析器_mysql查询分析工具|mysql查询分析器(MySQL Query Browser)下载v1.1.20 官方版_ IT猫扑网...
  20. Rosalind Java|Overlap Graphs

热门文章

  1. .NET - Diving into System Programming - Part 2[转贴]
  2. 卷积神经网络CNN(Convolutional Neural Network)原理与代码实现 Le-Net5
  3. Docker架构、常用命令和示例
  4. lambdapython语法_Python中lambda表达式的语法与应用
  5. OKExChain生态项目KSwap完成50万美元种子轮融资
  6. SAP License:统计型实际结算型内部订单
  7. JavaScript 基础(三) - Date对象,RegExp对象,Math对象,Window 对象,History 对象,Location 对象,DOM 节点...
  8. Appium环境搭建(Java版本)
  9. 解决eclipse端口被占用的问题
  10. 7-13爬虫入门之BeautifulSoup对网页爬取内容的解析