设计模式学习(二十三):中介模式

设计模式,学习,二十三,中介,模式 · 浏览次数 : 45

小编点评

**设计模式学习(二十三):中介模式** **中介模式**是一种行为型模式,它将请求或操作传递给其他对象,让它们处理并返回给原始对象。 **中介模式中介模式**是一种更复杂的中介模式,它不仅处理请求,还要协调多个对象之间的通信。 **中介模式的优点** * 简化了流程,降低了耦合性。 * 增强了代码可读性。 * 改善了代码的可维护性。 **中介模式的示例** ```java public class ChatRoom { public static void showMessage(User user, String content) { System.out.println(\"user :\" + user.getName() + \" send a message, content is \" + content); } } class User { private String name; public User(String name) { this.name = name; } public String getName() { return name; } public void sendMessage(String content) { ChatRoom.showMessage(this, content); } } public class Main { public static void main(String[] args) { User user = new User("Peter"); user.sendMessage("Hello "); user = new User("Harry"); user.sendMessage("Hi"); } } ``` **UML 图** ``` [Client] --> [中介] --> [服务器] ``` **代码 UML 图** ```
```

正文

设计模式学习(二十三):中介模式

作者:Grey

原文地址:

博客园:设计模式学习(二十三):中介模式

CSDN:设计模式学习(二十三):中介模式

中介模式

中介模式是一种行为型模式。

举个简单的例子,如果一个聊天室里面的用户1和用户2要聊天,聊天室就相当于中介的地位,用户1和用户2只管调用发消息方法,聊天室即可把消息给对方

public class ChatRoom {
    public static void showMessage(User user, String content) {
        System.out.println("user :" + user.getName() + " send a message, content is " + content);
    }
}

以上代码表示,聊天室将 user 说的 content 展示出来

主方法只需要如下调用即可:

public class Main {
    public static void main(String[] args) {
        User user = new User("Peter");
        user.sendMessage("Hello ");
        user = new User("Harry");
        user.sendMessage("Hi");
    }
}

User 中的 sendMessage 方法

public void sendMessage(String content){ChatRoom.showMessage(this,content);}

上述示例的 UML 图如下

image

中介模式应用

  • JDK 中的 Timer.schedule()

UML 和 代码

UML 图

代码

更多

设计模式学习专栏

参考资料

与设计模式学习(二十三):中介模式相似的内容:

设计模式学习(二十三):中介模式

设计模式学习(二十三):中介模式 作者:Grey 原文地址: 博客园:设计模式学习(二十三):中介模式 CSDN:设计模式学习(二十三):中介模式 中介模式 中介模式是一种行为型模式。 举个简单的例子,如果一个聊天室里面的用户1和用户2要聊天,聊天室就相当于中介的地位,用户1和用户2只管调用发消息方

设计模式学习(二十四):Spring 中使用到的设计模式

设计模式学习(二十四):Spring 中使用到的设计模式 作者:Grey 原文地址: 博客园:设计模式学习(二十四):Spring 中使用到的设计模式 CSDN:设计模式学习(二十四):Spring 中使用到的设计模式 观察者模式 定义一个继承 ApplicationEvent 的事件;定义一个实现

设计模式学习(二十):备忘录模式

设计模式学习(二十):备忘录模式 作者:Grey 原文地址: 博客园:设计模式学习(二十):备忘录模式 CSDN:设计模式学习(二十):备忘录模式 备忘录模式 备忘录模式是一种行为型模式。 用于记录对象的某个瞬间,类似快照的功能, 应用实例: 游戏中的「后悔药」; 打游戏时的存档; Windows

设计模式学习(二十一):命令模式

设计模式学习(二十一):命令模式 作者:Grey 原文地址: 博客园:设计模式学习(二十一):命令模式 CSDN:设计模式学习(二十一):命令模式 命令模式 命令模式是一种行为型模式。 通过调用者调用接受者执行命令,执行顺序是: 调用者→命令→接受者 ```, 如下示例,CopyCommand 中的

设计模式学习(二)工厂模式——抽象工厂模式+注册表

目录前言使用简单工厂改进使用注册表改进参考文章 前言 在上一篇文章中我们提到了抽象工厂模式初版代码的一些缺点:①客户端违反开闭原则②提供方违反开闭原则。本文将针对这两点进行讨论 使用简单工厂改进 对于缺点①,我们可以使用简单工厂的思路来改进抽象工厂的初版代码。对于上一篇文章中的例子,我们去除Came

设计模式学习(二)工厂模式——工厂方法模式+注册表

目录工厂方法模式的瑕疵注册表 工厂方法模式的瑕疵 在前一篇笔记中我们介绍了工厂方法模式,示例的类图如下: 考虑一种情况:现在要在程序运行时,根据外部资源,动态的实例化对象。也就是说在编译期我们无法知道要实例化的对象的类型。因此在实例化的过程中,就需要加以判断。 例如,在我的例子中,要根据连接到主机的

设计模式学习(二)工厂模式——抽象工厂模式

目录背景抽象工厂模式优点与缺点参考文章 背景 现在我需要开发一个相机操作模块,它可能在Windows下运行,也可能在Linux下运行。由于在厂家提供的SDK中,Windows下的SDK和Linux下的SDK是有区别的,因此对于一个品牌的相机,我们要创建两个类去封装这两个不同平台下的API。 我们先使

设计模式学习(二十二):解释器模式

设计模式学习(二十二):解释器模式 作者:Grey 原文地址: 博客园:设计模式学习(二十二):解释器模式 CSDN:设计模式学习(二十二):解释器模式 解释器模式 解释器模式是一种行为型模式。 解释器模式为某个语言定义它的语法(或者叫文法)表示,并定义一个解释器用来处理这个语法。 一般用于脚本语言

设计模式学习(二):单例模式

设计模式学习(二):单例模式 作者:Grey 原文地址: 博客园:设计模式学习(二):单例模式 CSDN:设计模式学习(二):单例模式 单例模式 单例模式是创建型模式。 单例的定义:“一个类只允许创建唯一一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。”定

设计模式学习(十三):观察者模式

设计模式学习(十三):观察者模式 作者:Grey 原文地址: 博客园:设计模式学习(十三):观察者模式 CSDN:设计模式学习(十三):观察者模式 观察者模式 观察者模式是一种行为型模式。在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知。 一般可以用做事件处理