【设计模式】中介者模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )
文章目录
- 一、中介者模式简介
- 二、中介者模式适用场景
- 三、中介者模式优缺点
- 四、中介者模式 与 观察者模式
- 五、中介者模式 代码示例
- 1、聊天室
- 2、用户
- 3、运行实例
一、中介者模式简介
中介者模式 : 定义 一个 封装一组对象 如何 交互 的 对象 ;
通过使 对象 明确地 相互引用 , 促进 松散耦合 , 允许 独立改变 它们之间的 交互 ;
中介者模式类型 : 行为型 ;
二、中介者模式适用场景
中介者模式适用场景 :
- 引用关系复杂 : 系统中 对象之间 存在 复杂的 引用关系 , 产生的 相互依赖关系 结构混乱 , 难以理解 ;
- 改变行为 : 交互的 公共行为 , 如果 需要 改变行为 , 可以 增加新的 中介者 类 ; ( 通过增加新的中介者类 , 达到扩展的目的 )
多人聊天室 就是一个 中介者模式 场景 , 一个人发言时 , 需要传达给每个人 , 如果没有聊天室 , 需要对每个人都说一遍 , 如果有中介者 , 就由中介者负责将发言传达给每个人 ;
三、中介者模式优缺点
中介者模式优点 :
-
降低复杂度 : 将 一对多 转化为 一对一 , 降低了 程序复杂程度 ;
如 : 聊天室中有 888 个人 , 如果要一对一进行交互 , 需要交互 777 次 ; 使用了中介者模式后 , 变成一对一 , 只要将交互内容交给中介者就可以了 , 中介者负责与其余 777 人进行交互 ; -
解耦 : 实现了 类之间的解耦 操作 ;
如 : 聊天室中有 888 个人 , 每个人都需要耦合另外 777 个 , 即持有另外 777 个对象 , 使用了中介者模式之后 , 888 个人只需要持有 中介者 对象即可 , 888 个人之间不再进行相互耦合 ;
中介者模式缺点 : 如果在 业务场景 中 中介者 数量过多 , 会导致系统 复杂性增加 ;
( 设计模式之间 , 也是一个相互平衡的过程 )
四、中介者模式 与 观察者模式
中介者模式 与 观察者模式 :
这两个模式经常 结合起来使用 , 使用 观察者模式 实现 中介者模式 中 , 角色间的通信 ;
五、中介者模式 代码示例
业务场景 : 聊天室 , 多人在聊天室中聊天 ;
聊天室 实例 只有一个 , 用户可以创建多个 , 并持有 聊天室 引用 ;
1、聊天室
package mediator;/*** 聊天室 , 中介者模式中的中介者* 该类实例在整个业务场景中只有一个*/ public class ChatRoom {public static void showMessage(User user, String message){System.out.println(user.getName() + " : " + message);} }
2、用户
package mediator;/*** 中介者模式中 与 中介者 交互的对象* 该类实例对象 , 需要创建多个*/ public class User {private String name;public User(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}/*** 主要业务逻辑 , 群聊时发送消息* @param message*/public void sendMessage(String message) {ChatRoom.showMessage(this, message);} }
3、运行实例
package mediator;public class Main {public static void main(String[] args) {User tom = new User("Tom");User jerry = new User("Jerry");User trump = new User("Trump");tom.sendMessage("I'm cat");jerry.sendMessage("I'm mouse");trump.sendMessage("MAGA");} }
总结
以上是生活随笔为你收集整理的【设计模式】中介者模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 【设计模式】状态模式 ( 简介 | 适用
- 下一篇: 【设计模式】命令模式 ( 简介 | 适用