Java设计模式之中介者模式详解

发布时间:2024年01月21日

Java设计模式之中介者模式详解

大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在今天的分享中,我们将深入探讨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!");

结语

中介者模式通过引入中介者对象,有效降低了对象之间的直接耦合关系,提升了系统的可维护性和扩展性。在设计多人协作平台等场景中,中介者模式的优雅实现使得系统更加灵活、可协同的同时,也增加了程序员的设计乐趣。让我们在代码的世界里,共同探寻中介者模式的奥妙,打破对象间的独舞,共创协调的舞台吧!

文章来源:https://blog.csdn.net/qq836869520/article/details/135630011
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。