中介者模式学习笔记

什么是中介者模式

中介者模式是一种行为型设计模式,它的主要作用是将系统内部各个对象之间的相互依赖关系转化为同一个中介者对象与其他对象的依赖关系。使用中介者模式可以有效地降低系统的复杂度,提高系统的可维护性和可扩展性。

实例

假设我们有一个房屋出租平台,其中包含了房东、租客和中介公司三个对象。房东和租客之间需要通过中介公司来进行合作,而不是直接沟通。中介公司就是我们的中介者对象。

UML图

以下是中介者模式的UML图:

中介者模式UML图

代码实现

以下是中介者模式的Java代码实现:

javaCopy Code
// 抽象中介者 interface Mediator { void sendMessage(Colleague colleague, String message); }
javaCopy Code
// 具体中介者 class ConcreteMediator implements Mediator { private Landlord landlord; private Tenant tenant; public void setLandlord(Landlord landlord) { this.landlord = landlord; } public void setTenant(Tenant tenant) { this.tenant = tenant; } @Override public void sendMessage(Colleague colleague, String message) { if (colleague == landlord) { tenant.notify(message); } else if (colleague == tenant) { landlord.notify(message); } } }
javaCopy Code
// 抽象同事类 abstract class Colleague { protected Mediator mediator; public Colleague(Mediator mediator) { this.mediator = mediator; } public void sendMessage(String message) { mediator.sendMessage(this, message); } public abstract void notify(String message); }
javaCopy Code
// 具体同事类 - 房东 class Landlord extends Colleague { public Landlord(Mediator mediator) { super(mediator); } @Override public void notify(String message) { System.out.println("房东收到信息:" + message); } }
javaCopy Code
// 具体同事类 - 租客 class Tenant extends Colleague { public Tenant(Mediator mediator) { super(mediator); } @Override public void notify(String message) { System.out.println("租客收到信息:" + message); } }
javaCopy Code
// 客户端代码 public class Client { public static void main(String[] args) { ConcreteMediator mediator = new ConcreteMediator(); Landlord landlord = new Landlord(mediator); Tenant tenant = new Tenant(mediator); mediator.setLandlord(landlord); mediator.setTenant(tenant); landlord.sendMessage("有人想租房子"); tenant.sendMessage("我想租房子"); } }

总结

中介者模式是一种非常实用的设计模式,它可以帮助我们有效地降低系统的复杂度,提高系统的可维护性和可扩展性。在实际开发中,我们可以将中介者模式应用在各种场景中,如游戏开发、UI设计等,以便更好地组织和管理系统内部各个对象之间的交互关系。