【行为型模式】中介者模式

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

一、中介者模式概述

        中介者模式定义用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式。(对象行为型模式)

【行为型模式】中介者模式,面向对象设计模式,中介者模式

  • 中介者模式的优缺点
    • 优点
      • 1.简化了对象之间的交互;
      • 2.将各同事解耦;
      • 3.减少子类生成;
      • 4.可以简化各同事类的设计和实现。
    • 缺点
      • 在具体中介者类中包含了同事之间的交互细节,可能会导致具体中介者类非常复杂,使得系统难以维护。
  • 适用环境
    • 1.系统中对象之间存在复杂的引用关系,产生的相互依赖关系结构混乱且难以理解;
    • 2.一个对象由于引用了其他很多对象并且直接和这些对象通信,导致难以复用该对象;
    • 3.想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类。可以通过引入中介者类来实现,在中介者中定义对象交互的公共行为,如果需要改变行为则可以增加新的中介者类
    • 4.我们所常知道的MVC模式中,controller就是我们所谓的中介者。

二、代码实现

中介者模式主要包含4个角色:

  • Mediator: 抽象中介者,是中介者的接口/抽象类;
  • ConcreteMediator: 具体中介者,中介者的具体实现,实现中介者接口,定义一个List来管理Colleague对象;
  • Colleague: 抽象同事类,定义同事类的接口/抽象类,保存中介者对象,实现同事类的公共方法;
  • ConcreteColleague: 具体同事类,实现抽象同事类。通过中介者间接完成具体同事类之间的通信交互。
        2.1 抽象中介者(Mediator)
package Mediator.example;
//抽象中介者
public abstract class Mediator {
	 /**注册同事类*/
    public abstract void register(Colleague colleague);

    /**处理接收逻辑*/
    public abstract void operation(Colleague colleague);
}
        2.2 具体中介者(ConcreteMediator)
package Mediator.example;
import java.util.List;
import java.util.ArrayList;
//具体中介者类
public class ConcreteMediator extends Mediator {

	private List<Colleague> colleagues = new ArrayList<Colleague>();
	@Override
	public void register(Colleague colleague) {
		// TODO Auto-generated method stub
		if (!colleagues.contains(colleague)) {
            colleagues.add(colleague);
            colleague.setMediator(this);
        }
	}

	@Override
	public void operation(Colleague colleague) {
		// TODO Auto-generated method stub
		for (Colleague coll : colleagues) {
            if (!coll.equals(colleague)) {
                coll.receive();
            }
        }
	}

}
        2.3 抽象同事类(Colleague)
package Mediator.example;
//抽象同事类
public abstract class Colleague {
	protected Mediator mediator;

	public void setMediator(Mediator mediator) {
		this.mediator = mediator;
	}

	public abstract void receive();

	public abstract void send();
}
        2.4 具体同事类(ConcreteColleague1、ConcreteColleague2)
package Mediator.example;
//具体同事类1
public class ConcreteColleague1 extends Colleague {

	@Override
	public void receive() {
		// TODO Auto-generated method stub
		System.out.println("具体同事类 ConcreteColleague1 接收请求");
	}

	@Override
	public void send() {
		// TODO Auto-generated method stub
		System.out.println("具体同事类 ConcreteColleague1 发送请求");
        /*中介者进行转发*/
        mediator.operation(this);
	}

}
package Mediator.example;
//具体同事类2
public class ConcreteColleague2 extends Colleague {

	@Override
	public void receive() {
		// TODO Auto-generated method stub
		System.out.println("具体同事类 ConcreteColleague2 接收到请求");
	}

	@Override
	public void send() {
		// TODO Auto-generated method stub
		 System.out.println("具体同事类 ConcreteColleague2 发送请求");
	     mediator.operation(this);
	}

}
        2.5 客户端(Client)
package Mediator.example;

public class Client {
    public static void main(String[] args) {
        Mediator concreteMediator = new ConcreteMediator();
        Colleague concreteColleague1 = new ConcreteColleague1();
        Colleague concreteColleague2 = new ConcreteColleague2();
        concreteMediator.register(concreteColleague1);
        concreteMediator.register(concreteColleague2);
        concreteColleague1.send();
        concreteColleague2.send();

    }
}
        2.6 UML图

【行为型模式】中介者模式,面向对象设计模式,中介者模式

三、代码结构图

【行为型模式】中介者模式,面向对象设计模式,中介者模式文章来源地址https://www.toymoban.com/news/detail-858804.html

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

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

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

相关文章

  • 【行为型模式】中介者模式

    一、中介者模式概述          中介者模式定义 : 用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式。( 对象行为型模式 ) 中介者模式的优缺点 : 优

    2024年04月26日
    浏览(28)
  • 行为型模式-中介者模式

    概述 一般来说,同事类之间的关系是比较复杂的,多个同事类之间互相关联时,他们之间的关系会呈现为复杂的网状结构,这是一种过度耦合的架构,即不利于类的复用,也不稳定。例如在下左图中,有六个同事类对象,假如对象1发生变化,那么将会有4个对象受到影响。如

    2024年02月02日
    浏览(23)
  • 行为型模式--中介者模式

    目录 概述 结构 案例实现 优缺点 优点: 缺点: 使用场景 一般来说,同事类之间的关系是比较复杂的,多个同事类之间互相关联时,他们之间的关系会呈现为复 杂的网状结构,这是一种过度耦合的架构,即不利于类的复用,也不稳定。例如在下左图中,有六个同 事类对象,

    2024年02月10日
    浏览(28)
  • 【设计模式】深入理解中介者模式,解耦对象之间的复杂交互,实现用户之间的消息传递,优化飞机之间的航线协调,构建高效的系统交互方式

    中介者模式是一种行为型设计模式,其核心思想是通过引入一个中介者对象来封装一组对象之间的交互。这种模式可以降低对象之间的耦合度,使得对象之间的交互更加灵活和可维护。 在现实世界中,我们经常会遇到需要协调多个对象之间交互的场景,例如聊天室中的用户之

    2024年01月23日
    浏览(30)
  • 设计模式——中介者模式

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

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

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

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

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

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

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

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

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

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

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

    2024年02月15日
    浏览(31)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包