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

2023-05-04 15:47:14 浏览数 (1)

中介者模式(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);
        }
    }
}

0 人点赞