设计模式-中介模式

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

设计模式-中介模式

中介模式(Mediator Pattern)是一种行为设计模式,它定义了一个中介对象来封装一系列的对象交互,从而使各个对象不需要显式地相互引用,从而降低对象之间的耦合度,提高系统的可扩展性和可维护性

  1. Mediator(中介者)
    • 定义了同事对象之间的交互方式。
    • 通常包含一个登记同事对象的方法,以便在需要的时候能通知它们。
    • 实现了对同事对象之间交互的集中管理,减少了对象之间的直接引用。
  2. Colleague(同事类)
    • 每个同事类都知道中介者对象,并与其进行交互。
    • 同事类之间不直接通信,而是通过中介者对象间接交互。

工作原理

  • 各个同事对象通过调用中介者对象的方法来互相影响,而不是直接调用彼此的方法。
  • 中介者对象处理同事对象之间的交互逻辑,它可以决定何时以及如何响应来自同事对象的请求。

代码实现:

/**
 * 抽象同事类
 */
public abstract class Colleague {
    protected Mediator mediator;

    public Colleague(Mediator mediator) {
        this.mediator = mediator;
    }
}
/**
 * 抽象中介者
 */
public interface Mediator {
    /**
     * 发送消息方法,得到同事对象和发送消息
     */
    void send(String messag,Colleague colleague);

}

/**
 * 具体实现同事类1
 */
public class ConcreteColleague1 extends Colleague {

    public ConcreteColleague1(Mediator mediator) {
        super(mediator);
    }

    public void send(String message){
        this.mediator.send(message,this);
    }

    public void notify(String message){
        System.out.println("同事1得到消息: " + message);
    }
}
/**
 * 具体实现同事类2
 */
public class ConcreteColleague2 extends Colleague{
    public ConcreteColleague2(Mediator mediator) {
        super(mediator);
    }

    public void send(String message){
        this.mediator.send(message,this);
    }

    public void notify(String message){
        System.out.println("同事2得到消息: " + message);
    }
}
/**
 * 具体中介者
 */
public class ConcreteMediator implements Mediator{
    private ConcreteColleague1 colleague1;
    private ConcreteColleague2 colleague2;
    public ConcreteMediator(){}

    public void setConcreteMediator(ConcreteColleague1 colleague1) {
        this.colleague1 = colleague1;
    }

    public void setConcreteMediator(ConcreteColleague2 colleague2) {
        this.colleague2 = colleague2;
    }

    /**
     * 相互传递消息
     */
    @Override
    public void send(String message, Colleague colleague){
        if (colleague == colleague1){
            colleague2.notify(message);
        }else{
            colleague1.notify(message);
        }
    }
}
/**
 * 中介模式客户端
 */
public class MediatorDemo {
    public static void main(String[] args) {
        // 创建具体中介
        ConcreteMediator concreteMediator = new ConcreteMediator();

        // 创建同事1,2
        ConcreteColleague1 concreteColleague1 = new ConcreteColleague1(concreteMediator);
        ConcreteColleague2 concreteColleague2 = new ConcreteColleague2(concreteMediator);

        concreteMediator.setConcreteMediator(concreteColleague1);
        concreteMediator.setConcreteMediator(concreteColleague2);
        concreteColleague1.send("你吃了么?");
        concreteColleague2.send("没呢");

    }
}

打印输出:文章来源地址https://www.toymoban.com/news/detail-817339.html

Connected to the target VM, address: '127.0.0.1:12313', transport: 'socket'
同事2得到消息: 你吃了么?
同事1得到消息: 没呢
Disconnected from the target VM, address: '127.0.0.1:12313', transport: 'socket'

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

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

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

相关文章

  • 行为型设计模式——中介者模式

    行为型设计模式——中介者模式

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

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

    大话设计模式之中介者模式

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

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

    设计模式- 中介者模式(Mediator)

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

    2024年04月26日
    浏览(11)
  • Java设计模式-中介者模式

    中介者模式,就是用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地互相引用,从而使其耦合松散,而且可以独立的改变它们之间的交互。 其实中介者模式很简单的,就像它的名字一样,中介,调用某个类的某些方法的时候,我们不直接去跟那个类的实

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

    设计模式—行为型模式之中介者模式

    中介者模式(Mediator Pattern):用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,减少对象间混乱的依赖关系,从而使其耦合松散,而且可以独立地改变它们之间的交互。对象行为型模式。 包含以下角色: Mediator: 抽象中介者 ConcreteMediator: 具体中

    2024年01月16日
    浏览(7)
  • 设计模式-行为型模式之中介者模式

    设计模式-行为型模式之中介者模式

    在用户与用户直接聊天的设计方案中,用户对象之间存在很强的 关联性 ,将导致系统出现如下问题: 对象之间存在大量的相互关联和调用,若有一个对象发生变化,则需要跟踪和该对象关联的其他所有对象,并进行适当处理。 由于一个对象和其他对象具有很强的关联,若没

    2023年04月23日
    浏览(13)
  • 《设计模式的艺术》笔记 - 中介者模式

            中介者模式用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式,它是一种对象行为模式。 myclass.h myclass.cpp main.cpp         1. 中介者模式简化了

    2024年01月24日
    浏览(11)
  • 经典的设计模式17——中介者模式

    定义: 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。 结构: 抽象中介者角色:是中介者的接口,提供了同事对象注册与转发同事对象信息的抽象方法。 具体中介者角色:实现中

    2024年02月09日
    浏览(13)
  • C++ 设计模式之 中介者模式

    C++ 设计模式之 中介者模式

    【声明】本题目来源于卡码网(题目页面 (kamacoder.com)) 【提示:如果不想看文字介绍,可以直接跳转到C++编码部分】         -- 什么是中介者模式  (第16种模式)          中介者模式 (Mediator Pattern)也被称为 调停者模式 ,是⼀种 ⾏为型设计模式 ,它通过⼀个中介

    2024年01月19日
    浏览(14)
  • 设计模式(十七)中介者

    设计模式(十七)中介者

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

    2024年02月04日
    浏览(9)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包