【Java开发】设计模式 17:中介者模式

这篇具有很好参考价值的文章主要介绍了【Java开发】设计模式 17:中介者模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 中介者模式介绍

中介者模式是一种行为设计模式,指用一个中介对象来封装一系列的对象交互。

中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。在这个模式中,中介者负责协调各个对象间的通信,使其流程更加清晰简单。

📌 场景

中介者模式可以应用于多个对象之间有复杂的交互关系的场景,例如一个大型软件系统中的模块之间的协作、多个部门之间的协作等。中介者模式可以简化对象之间的交互,使得对象之间的耦合度降低。具体来说,通过引入中介者对象,可以让对象之间的通信集中在中介者对象上,从而避免了对象之间的直接依赖关系,提高了系统的可维护性和可扩展性。

📌 优点

  1. 减少对象之间的耦合度:通过使用中介者对象,可以将系统中多个对象之间的相互作用关系简化为中介者与对象之间的一种关系,从而降低系统的复杂性。
  2. 提高系统的可扩展性:由于中介者模式将对象之间的相互作用关系抽象到中介者对象中,所以增加新的对象和中介者对象对原有系统的修改都是非常方便的。
  3. 降低系统的复杂度:中介者模式将多个对象之间的相互作用关系简化为中介者与对象之间的一种关系,使得系统的设计、实现变得更加简单。

📌 缺点

  1. 中介者对象会增加系统的复杂度:中介者对象需要处理多个对象之间的相互作用关系,所以它的设计和实现会比较复杂,这会增加系统的复杂度。
  2. 中介者对象可能会成为系统的瓶颈:由于中介者对象需要处理多个对象之间的相互作用关系,所以如果中介者对象的处理能力不足,可能会成为系统的瓶颈。
  3. 中介者模式会将原本分散的系统逻辑集中到一个地方:中介者模式将系统中多个对象之间的相互作用关系抽象到中介者对象中,因此原本分散的系统逻辑会集中到一个地方,这可能会使得系统的代码结构变得复杂。

2 中介者模式实现

以房屋中介为例:

📌 1.定义用户

/**
 * 用户
 */
public class User {
    /**
     * 姓名
     */
    private final String name;

    /**
     * 电话
     */
    private final String phone;

    /**
     * 构造姓名和电话
     * @param name 姓名
     * @param phone 电话
     */
    public User(String name, String phone) {
        this.name = name;
        this.phone = phone;
    }

    /**
     * 需要具体想找的地址和中介
     * @param address 地址
     * @param mediator 中介
     * @return 用户
     */
    public User find(String address, Mediator mediator) {
        // 中介根据地址找房
        return mediator.find(address);
    }

    @Override
    public String toString() {
        return "(姓名:" + name + ",电话:" + phone + ")";
    }
}

📌 2.定义中介

/**
 * 中介
 */
public class Mediator {
    /**
     * 存储在售房屋
     */
    private final Map<String, User> userMap = new HashMap<>();

    /**
     * 登记房屋
     * @param address 地址
     * @param user 用户
     */

    public void register(String address, User user) {
        userMap.put(address, user);
    }

    /**
     * 查找房源
     * @param address 地址
     * @return 房东
     */
    public User find(String address) {
        return userMap.get(address);
    }
}

📌 3.调用

public class Client {
    public static void main(String[] args) {
        // 房东
        User landlord = new User("AA", "10011");
        // 租客
        User tenant = new User("BB", "10022");
        // 中介
        Mediator mediator = new Mediator();
        // 中介登记房产
        mediator.register("深圳市深圳湾一号", landlord);
        // 租客委托中介查找符合要求房子的房东
        User result = tenant.find("深圳市宝安区城中村", mediator);
        if (result == null) {
            System.out.println("没有找到对应的房源");
        } else {
            System.out.print("成功找到对应房源:");
            System.out.println(result);
        }
        // 再次查找
        result = tenant.find("深圳市深圳湾一号", mediator);
        if(result == null) {
            System.out.println("没有找到对应的房源");
        } else {
            System.out.print("成功找到对应房源:");
            System.out.println(result);
        }
    }
}

控制台输出:

没有找到对应的房源
成功找到对应房源:(姓名:AA,电话:10011)

这样就实现了日常生活中的通过中介租房。文章来源地址https://www.toymoban.com/news/detail-421419.html

到了这里,关于【Java开发】设计模式 17:中介者模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通过简单的中介者模式模型了解迪米特法则(设计模式与开发实践 P14)

    虽然面向对象鼓励将行为分布到各个对象中,把对象划分成更小的粒度有利于对象可复用性,但有时对象之间联系太多又会反而降低可复用性 通过一个中介者对象封装 一组对象之间的交互 ,减少对象间直接耦合,对象之间的通信集中在中介者对象中,使得对象间交互更加简

    2024年02月07日
    浏览(35)
  • 【设计模式——学习笔记】23种设计模式——中介者模式Observer(原理讲解+应用场景介绍+案例介绍+Java代码实现)

    普通实现 在租房过程中,客户可能去找房东问房子是否可以租,但是房东可能要和家人进行一系列的沟通,最后还可能派出另一个家庭成员来和客户进行交流,整个沟通过程非常复杂、沟通线路繁多。如果是写成程序的模式,不同成员之间需要留好接口方便成员之间互相进行

    2024年02月14日
    浏览(48)
  • 设计模式——中介者模式

    中介者模式(Mediator Pattern)是一种行为型设计模式,它旨在减少多个对象之间的相互引用和耦合度。通过引入一个中介对象来封装一系列交互行为,使得原本复杂的网状关系结构转变为星形结构,所有对象与中介者通信而不是彼此直接通信。 抽象中介者(Mediator Interface):

    2024年01月18日
    浏览(37)
  • 设计模式-中介者模式

    本文将详细介绍设计模式中的中介者模式,其中包括,中介者模式的优点、缺点、各组成部分。 中介者模式(Mediator Pattern)是一种设计模式,它定义了一个中介者类,该类将多个对象之间的通信抽象化,使得这些对象可以通过中介者进行通信,从而降低它们之间的直接耦合

    2024年02月09日
    浏览(34)
  • 设计模式篇---中介者模式

    中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 就好比世界各个国家之间可能会产生冲突,但是当产生冲突的时候需要联合国来解决冲突。每个国家之间的关系,就好

    2024年01月22日
    浏览(38)
  • 设计模式之中介者模式

    详细介绍         中介者模式(Mediator Pattern)是一种行为设计模式, 它通过定义一个中介类来封装多个对象之间的交互,使各对象不需要显示地相互引用,从而降低耦合度,提高系统的可维护性和灵活性。中介者模式将原本一对多的网状关系转变为一对多的关系,即每个

    2024年04月29日
    浏览(66)
  • 设计模式(十七)中介者

    义一个对象来封装一系列的对象交互。中介者模式使各对象不需要显示地相互引用,从而使其耦合松散,而且可以让你相对独立地改变它们之间的交互。中介者模式又称为调停模式,它是一种对象说行为型模式。 在中介者模式中,引入了用于协调其他对象/类之间的相互调用

    2024年02月04日
    浏览(38)
  • 行为型设计模式——中介者模式

    中介者模式主要是将关联关系由一个中介者类统一管理维护,一般来说,同事类之间的关系是比较复杂的,多个同事类之间互相关联时,他们之间的关系会呈现为复杂的网状结构,这是一种过度耦合的架构,即不利于类的复用,也不稳定。例如在下左图中,有六个同事类对象

    2024年01月18日
    浏览(47)
  • 大话设计模式之中介者模式

    中介者模式是一种行为型设计模式,它通过引入一个中介者对象来封装一系列对象之间的交互,从而减少对象之间的直接通信,使得对象之间的耦合度降低,同时提高了系统的可维护性和灵活性。 在中介者模式中,对象之间的通信不再直接发生,而是通过中介者对象来进行。

    2024年04月16日
    浏览(42)
  • 设计模式- 中介者模式(Mediator)

    中介者模式(Mediator Pattern),是一种对象行为型模式。该模式的主要目的是定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合变得松散,并且可以独立地改变它们之间的交互。 抽象中介者(Mediator) :这是中介者模式的核心接口,它定义了同事对象注

    2024年04月26日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包