GoF中定义:

定义一个接口来封装一群对象的互动行为

中介者通过移除对象之间的引用

以减少他们之间的耦合度

并且能改变它们之间的互动独立性

游戏做的越大,系统划分的也就越多

如事件系统,关卡系统,信息系统,界面系统等。

系统切分越细,就意味着系统之间的沟通越复杂

单一系统引入太多其他系统的功能,不利于单一系统的转换和维护

单一系统被过多的系统所依赖,不利于接口的更改,容易牵一发而动全身

由于需要提供给其他系统操作,系统的接口可能会过于庞大,不容易维护

using UnityEngine;public abstract class Mediator {public abstract void SendMessage(Colleague theColleague,string Message);}public abstract class Colleague {protected Mediator m_Mediator = null;public Colleague(Mediator theMediator) {m_Mediator = theMediator;}public abstract void Request(string Message);}public class ConcreateColleague1 : Colleague {public ConcreateColleague1(Mediator theMediator) : base(theMediator) { }public void Action() {m_Mediator.SendMessage(this,"Colleage1发出通知");}public override void Request(string Message){Debug.Log("ConcreateColleague1.Request:" + Message);}}public class ConcreateColleague2 : Colleague{public ConcreateColleague2(Mediator theMediator) : base(theMediator) { }public void Action(){m_Mediator.SendMessage(this,"Colleage2发出通知");}public override void Request(string Message){Debug.Log("ConcreateColleague2.Request:" + Message);}}public class ConcreteMediator : Mediator {ConcreateColleague1 m_Colleague1 = null;ConcreateColleague2 m_Colleague2 = null;public void SetColleague1(ConcreateColleague1 theColleague) {m_Colleague1 = theColleague;}public void SetColleague2(ConcreateColleague2 theColleague) {m_Colleague2 = theColleague;}public override void SendMessage(Colleague theColleague, string Message){if (m_Colleague1 == theColleague)m_Colleague2.Request(Message);if (m_Colleague2 == theColleague)m_Colleague1.Request(Message);}}

先产生中介者ConcreteMediator的对象之后

接着产生两个Colleague对象

并将其设置给中介者

分别调用两个Colleague对象的Action方法

查看信息是否通过Mediator传递给Colleague

文章整理自书籍《设计模式与游戏完美开发》 菜升达 著

转载于:https://www.cnblogs.com/fws94/p/7199500.html

【Unity3D与23种设计模式】中介者模式(Mediator)相关推荐

  1. 23种设计模式----中介者模式----行为型模式

    中介者模式 1.什么是中介者模式 2.中介者模式的角色 3.例子 3.1 项目结构 3.2 共同实体 3.3 抽象的中介者 3.4 抽象的被中介者 3.5 具体的中介者 3.6 具体的被中介者 3.7 ...

  2. 23种设计模式——中介者模式

    引言: 在现实生活中,有很多中介者模式的身影,例如QQ游戏平台,聊天室.QQ群和短信平台,这些都是中介者模式在现实生活中的应用,下面就具体分享下我对中介者模式的理解. 中介者模式的定义: 从生活中的例 ...

  3. 【Unity3D与23种设计模式】模板方法模式(Template Method)

    GoF中定义: "在一个操作方法中定义算法的流程,其中某些步骤由子类完成. 模板方法模式让子类在不变更原有算法流程的情况下,还能够重新定义其中的步骤" 每一次武器攻击目标时,都要按 ...

  4. 23种设计模式——装饰者模式

    文章目录 23种设计模式--装饰者模式 1.装饰者模式概述 2.装饰者模式的结构 3.装饰者模式的实现 4.装饰者模式的应用场景 23种设计模式--装饰者模式 1.装饰者模式概述 背景 有些人为了早上 ...

  5. 实践GoF的23种设计模式:建造者模式

    本文分享自华为云社区<[Go实现]实践GoF的23种设计模式:建造者模式>,作者: 元闰子. 简述 在程序设计中,我们会经常遇到一些复杂的对象,其中有很多成员属性,甚至嵌套着多个复杂的对象 ...

  6. 【Go实现】实践GoF的23种设计模式:命令模式

    上一篇:[Go实现]实践GoF的23种设计模式:代理模式 简单的分布式应用系统(示例代码工程):https://github.com/ruanrunxue/Practice-Design-Patter ...

  7. 23种设计模式7_代理模式之一静态代理

    23种设计模式7_代理模式之一静态代理 1 基本介绍 代理模式:为其他对象提供一种代理以控制对这个对象的访问 代理模式也叫委托模式,它是一项基本设计技巧.许多其他的模式,如状态模式.策略模式.访问者模 ...

  8. 23种设计模式之命令模式和策略模式的区别

    文章目录 概述 命令模式 策略模式 相同点 总结 概述 命令模式和策略模式确实很相似,只是命令模式多了一个接收者(Receiver)角色.它们虽然同为行为类模式,但是两者的区别还是很明显的.策略模式的 ...

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

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

  10. 23种设计模式之代理模式

    文章目录 代理模式的定义与特点 代理模式的结构与实现 模式的结构 模式的实现 代理模式的应用场景 代理模式的应用实例 代理模式的扩展 代理模式分类 静态代理 动态代理 在有些情况下,一个客户不能或者不 ...

最新文章

  1. Xilinx IP核专题之PLL IP核介绍(Spartan-6)
  2. python环境变量配置_Anaconda从下载到环境变量配置(windows)
  3. 【C/C++语法外功】C/C++头文件一览[轉]
  4. swift UIActivityIndicatorView
  5. ppc linux 性能,用profile和oprofile监视视linux性能!
  6. 不联网redhat5.5安装oracle11g,redhat5.5_64位上安装oracle11gR2_步骤+问题解决
  7. static变量和static函数的用法摘抄
  8. ubuntu 14.04中安装phpmyadmin即mysql图形管理界面
  9. leetcode319 Bulb Switcher
  10. 传奇gom引擎架设教程
  11. Qt:34---MDI多文档界面
  12. mysql 中的脏读与幻读_mysql中脏读、不可重复读、幻读以及四种隔离级别的浅显理解...
  13. 1.SPSS概述(安装与界面基本认识)
  14. 《C语言程序设计》江宝钏主编-习题6-2-排列数
  15. 极其简单的Flutter 屏幕适配
  16. PyQt(Python+Qt)学习随笔:formLayout的layoutLabelAlignment 属性
  17. 录音文件怎么转文字 手机便签里的录音文字转换方法
  18. L1正则化及其稀疏性的傻瓜解释
  19. 大数据可视化工具圈里的春秋战国
  20. unity 在game视图模型穿插问题

热门文章

  1. 转:JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue
  2. jquery append 动态添加的元素事件on 不起作用的解决方案
  3. Spring Data JPA 条件查询的关键字
  4. 深度探索C++对象模型——关于对象
  5. ConcurrentHashMap中的2的n次方幂上舍入方法
  6. ssh首次连接时提示yes/no
  7. android之Activity的生命周期
  8. 【BZOJ】1706: [usaco2007 Nov]relays 奶牛接力跑
  9. mysql 5.7.12 修改密码
  10. linux下mysql中文乱码