中介者模式(Mediator Pattern)是一种行为型设计模式,它可以通过将对象之间的通信集中处理来减少对象之间的耦合度,从而提高系统的灵活性和可维护性。在中介者模式中,所有的对象之间通过一个中介者对象进行通信,而不是直接相互引用。这样,每个对象都只需要与中介者对象进行通信,而不需要与其他对象直接通信,从而使得系统的复杂度降低,耦合度减少。
中介者模式的角色有以下几种:
- 抽象中介者(Mediator):定义了中介者对象的接口,通常包括一个或多个通知方法。
- 具体中介者(Concrete Mediator):实现了中介者接口,负责协调各个同事对象之间的通信。
- 抽象同事类(Colleague):定义了同事对象的接口,通常包括一个或多个发送消息的方法。
- 具体同事类(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);
}
}
}