中介者模式与解释器模式(1)

简介: 中介者模式与解释器模式(1)

一、中介者模式介绍


为什么引入中介模式?


在现实生活中,中介者的存在是不可缺少的,如果没有了中介者,我们就不能与远方的朋友进行交流了。而在软件设计领域,为什么要使用中介者模式呢?如果不使用中介者模式的话,各个同事对象将会相互进行引用,如果每个对象都与多个对象进行交互时,将会形成如下图所示的网状结构。


image.png


从上图可以发现,如果不使用中介者模式的话,每个对象之间过度耦合,这样的既不利于类的复用也不利于扩展。如果引入了中介者模式,那么对象之间的关系将变成星型结构,采用中介者模式之后会形成如下图所示的结构:


image.png


从上图可以发现,使用中介者模式之后,任何一个类的变化,只会影响中介者和类本身,不像之前的设计,任何一个类的变化都会引起其关联所有类的变化。这样的设计大大减少了系统的耦合度。


中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。


优点:

1、减少类间依赖,将多对多依赖转换为一对多,降低了类之间耦合;

2、类间各司其职,符合迪米特法则。


缺点:

中介者模式中将原本多个对象直接的相互依赖变成了中介者和多个同事类的依赖关系。当同事类越多时候,中介者就越臃肿,变得复杂且难以维护。


二、中介者模式实例

实现

我们通过聊天室实例来演示中介者模式。实例中,多个用户可以向聊天室发送消息,聊天室向所有的用户显示消息。我们将创建两个类 ChatRoom 和 User。User 对象使用 ChatRoom 方法来分享他们的消息。


MediatorPatternDemo,我们的演示类使用 User 对象来显示他们之间的通信。


image.png


步骤 1

创建中介类。


import java.util.Date;
public class ChatRoom {
   public static void showMessage(User user, String message){
      System.out.println(new Date().toString()
         + " [" + user.getName() +"] : " + message);
   }
}


步骤2


public class User {
   private String name;
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
   public User(String name){
      this.name  = name;
   }
   public void sendMessage(String message){
      ChatRoom.showMessage(this,message);
   }
}


步骤 4

执行程序,输出结果:


Thu Jan 31 16:05:46 IST 2013 [Robert] : Hi! John!
Thu Jan 31 16:05:46 IST 2013 [John] : Hello! Robert!



目录
相关文章
|
7月前
行为型 中介者模式
行为型 中介者模式
41 0
|
设计模式 移动开发 数据库
行为型设计模式10-解释器模式
行为型设计模式10-解释器模式
104 1
|
5天前
|
SQL 设计模式 C#
解释器模式
解释器模式是一种行为型设计模式,用于定义语言的文法表示并提供解释器处理语句或表达式。它将语法规则与解释逻辑分离,便于扩展和维护。适用于简单的语法规则、固定文法结构及重复使用的语法解释场景,如数学表达式求值、SQL解析和简单脚本语言。优点包括易于扩展新规则和分离语法逻辑,但复杂文法会导致类数量激增,维护困难。
20 2
|
3月前
|
设计模式 Java
Java设计模式-中介者模式(20)
Java设计模式-中介者模式(20)
|
7月前
|
设计模式 Java 数据库连接
聊聊Java设计模式-中介者模式
中介者(Mediator)模式指定义了一个单独的中介对象,来封装一组对象之间的交互。即将这组对象之间的交互委派给中介对象,从而来避免对象之间的直接交互。
74 1
聊聊Java设计模式-中介者模式
|
7月前
|
设计模式 SQL 自然语言处理
行为型 解释器模式
行为型 解释器模式
48 0
|
7月前
|
算法
行为型 访问者模式
行为型 访问者模式
61 0
|
设计模式 算法 Java
设计模式-行为型模式:解释器模式
设计模式-行为型模式:解释器模式
|
设计模式 Java
Java设计模式——中介者模式
Java设计模式——中介者模式
129 0
Java设计模式——中介者模式
|
设计模式 JavaScript 编译器
我学会了,解释器模式
解释器模式属于行为型模式,这个类型的设计模式总结出了 类、对象之间的经典交互方式,将类、对象的行为和使用解耦了,花式的去使用对象的行为来完成特定场景下的功能。
94 0
我学会了,解释器模式
下一篇
DataWorks