前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式-中介者模式(一)

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

原创
作者头像
堕落飞鸟
发布2023-05-04 15:47:14
970
发布2023-05-04 15:47:14
举报
文章被收录于专栏:飞鸟的专栏飞鸟的专栏

中介者模式(Mediator Pattern)是一种行为型设计模式,它可以通过将对象之间的通信集中处理来减少对象之间的耦合度,从而提高系统的灵活性和可维护性。在中介者模式中,所有的对象之间通过一个中介者对象进行通信,而不是直接相互引用。这样,每个对象都只需要与中介者对象进行通信,而不需要与其他对象直接通信,从而使得系统的复杂度降低,耦合度减少。

中介者模式的角色有以下几种:

  1. 抽象中介者(Mediator):定义了中介者对象的接口,通常包括一个或多个通知方法。
  2. 具体中介者(Concrete Mediator):实现了中介者接口,负责协调各个同事对象之间的通信。
  3. 抽象同事类(Colleague):定义了同事对象的接口,通常包括一个或多个发送消息的方法。
  4. 具体同事类(Concrete Colleague):实现了同事接口,与其他同事对象通过中介者对象进行通信。

下面我们通过一个简单的Java示例来演示中介者模式的使用。

示例说明:

假设有一家卖房地产的公司,公司内部有多个部门,包括销售部门、财务部门、市场部门等。每个部门之间需要协调工作,进行信息的交换和共享。为了避免部门之间产生紧密的耦合关系,我们可以使用中介者模式来设计该公司的内部通信机制。

代码实现:

定义抽象中介者类

代码语言:javascript
复制
public abstract class Mediator {
    public abstract void send(String message, Colleague colleague);
}

定义具体中介者类

代码语言:javascript
复制
public class ConcreteMediator extends Mediator {
    private ColleagueSales sales;
    private ColleagueFinance finance;
    private ColleagueMarket market;

    public void setSales(ColleagueSales sales) {
        this.sales = sales;
    }

    public void setFinance(ColleagueFinance finance) {
        this.finance = finance;
    }

    public void setMarket(ColleagueMarket market) {
        this.market = market;
    }

    @Override
    public void send(String message, Colleague colleague) {
        if (colleague == sales) {
            finance.receive(message);
            market.receive(message);
        } else if (colleague == finance) {
            sales.receive(message);
            market.receive(message);
        } else if (colleague == market) {
            sales.receive(message);
            finance.receive(message);
        }
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 中介者模式的角色有以下几种:
  • 示例说明:
  • 定义抽象中介者类
  • 定义具体中介者类
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档