Java设计模式之中介者模式详解
在今天的分享中,我们将深入探讨Java设计模式的中介者模式,揭示其在构建协调舞台、打破对象独舞中的巧妙运用。
中介者模式的背景
中介者模式是一种行为型设计模式,旨在降低对象之间的直接耦合关系,通过引入一个中介者对象,实现系统中对象的松耦合交互。中介者负责协调对象之间的通信,使得对象之间不再直接相互引用,而是通过中介者进行沟通。
中介者模式的关键要素
- Mediator(中介者): 定义了对象之间交互的接口,负责协调对象的行为。
- ConcreteMediator(具体中介者): 实现了Mediator接口,负责具体对象之间的协调逻辑。
- Colleague(同事): 定义了对象的行为接口,与其他同事对象共享中介者。
- ConcreteColleague(具体同事): 实现了Colleague接口,负责自身的行为,并与其他同事对象协同工作。
如何实现中介者模式
中介者模式的基本结构
// 中介者接口 public interface Mediator { void notifyColleague(Colleague sender, String message); } // 具体中介者 public class ConcreteMediator implements Mediator { private Colleague colleague1; private Colleague colleague2; public void setColleague1(Colleague colleague1) { this.colleague1 = colleague1; } public void setColleague2(Colleague colleague2) { this.colleague2 = colleague2; } @Override public void notifyColleague(Colleague sender, String message) { if (sender == colleague1) { colleague2.receive(message); } else { colleague1.receive(message); } } } // 同事接口 public interface Colleague { void setMediator(Mediator mediator); void send(String message); void receive(String message); } // 具体同事 public class ConcreteColleague implements Colleague { private Mediator mediator; @Override public void setMediator(Mediator mediator) { this.mediator = mediator; } @Override public void send(String message) { mediator.notifyColleague(this, message); } @Override public void receive(String message) { System.out.println("Colleague received message: " + message); } }
中介者模式的实际应用场景
构建多人协作平台
中介者模式在多人协作平台的设计中有着广泛的应用。通过中介者,各个用户(同事对象)可以在平台上进行消息的发送与接收,实现用户之间的沟通和协作。
// 创建具体中介者对象 ConcreteMediator mediator = new ConcreteMediator(); // 创建具体同事对象 ConcreteColleague colleague1 = new ConcreteColleague(); ConcreteColleague colleague2 = new ConcreteColleague(); // 设置同事对象的中介者 colleague1.setMediator(mediator); colleague2.setMediator(mediator); // 设置中介者的同事对象 mediator.setColleague1(colleague1); mediator.setColleague2(colleague2); // 用户之间发送消息 colleague1.send("Hello, colleague2!"); colleague2.send("Hi, colleague1!");
结语
中介者模式通过引入中介者对象,有效降低了对象之间的直接耦合关系,提升了系统的可维护性和扩展性。在设计多人协作平台等场景中,中介者模式的优雅实现使得系统更加灵活、可协同的同时,也增加了程序员的设计乐趣。让我们在代码的世界里,共同探寻中介者模式的奥妙,打破对象间的独舞,共创协调的舞台吧!