【java设计模式之中介者模式】

🌈个人主页: 程序员不想敲代码啊
🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家
👍点赞⭐评论⭐收藏
🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步!

中介者模式

中介者模式(Mediator Pattern)是一种设计模式,属于行为型模式。它用于减少多个对象之间的复杂交互,通过引入一个中介者对象来协调这些对象之间的通信。在这个模式中,各个对象不再直接交互,而是通过中介者进行通信,这样可以降低对象间的耦合性,使得系统更加灵活和可扩展。

中介者模式的结构

  • 中介者接口(Mediator):定义一个接口,用于与各个同事对象进行通信。
  • 具体中介者(ConcreteMediator):实现中介者接口,维护各个同事对象的引用,并协调它们之间的交互。
  • 同事类(Colleague):定义一个与中介者的交互接口。具体同事类通过中介者与其他同事进行通信。

中介者模式的优势

  1. 降低耦合度:同事类之间不需要直接引用彼此,相互之间的关系通过中介者进行管理,从而降低了系统的复杂度。
  2. 集中管理:协议和流程在中介者中管理,使得系统更易于维护和修改。
  3. 提升可扩展性:通过增加新的同事类或中介者,可以轻松扩展系统的功能。

中介者模式的示例代码

以下是一个简单示例,描述了一个用于控制用户之间聊天的中介者模式。

java 复制代码
// 中介者接口
interface ChatMediator {
    void sendMessage(String message, User user);
    void addUser(User user);
}

// 具体中介者
class ChatMediatorImpl implements ChatMediator {
    private List<User> users;

    public ChatMediatorImpl() {
        this.users = new ArrayList<>();
    }

    @Override
    public void sendMessage(String message, User user) {
        for (User u : users) {
            // 不发给发送者自己
            if (u != user) {
                u.receive(message);
            }
        }
    }

    @Override
    public void addUser(User user) {
        users.add(user);
    }
}

// 同事类
abstract class User {
    protected ChatMediator mediator;
    protected String name;

    public User(ChatMediator mediator, String name) {
        this.mediator = mediator;
        this.name = name;
    }

    public abstract void send(String message);
    public abstract void receive(String message);
}

// 具体同事类
class UserImpl extends User {

    public UserImpl(ChatMediator mediator, String name) {
        super(mediator, name);
    }

    @Override
    public void send(String message) {
        System.out.println(this.name + ": Sending Message = " + message);
        mediator.sendMessage(message, this);
    }

    @Override
    public void receive(String message) {
        System.out.println(this.name + ": Received Message = " + message);
    }
}

// 测试中介者模式
public class MediatorPatternDemo {
    public static void main(String[] args) {
        ChatMediator mediator = new ChatMediatorImpl();

        User user1 = new UserImpl(mediator, "Alice");
        User user2 = new UserImpl(mediator, "Bob");
        User user3 = new UserImpl(mediator, "Charlie");

        mediator.addUser(user1);
        mediator.addUser(user2);
        mediator.addUser(user3);

        user1.send("Hi All!");
        user2.send("Hello!");
    }
}

运行结果

在这个例子中,我们创建了一个聊天中介者ChatMediatorImpl,它管理多个用户(同事类)。用户通过调用send方法发送消息,而消息会通过中介者分发给其他用户。运行代码会显示发送和接收消息的情况。

适用场景

中介者模式适用于以下场景:

  • 有多个对象之间存在复杂的交互关系。
  • 希望通过中央控制器来简化对象的交互。
  • 需要解耦对象之间的依赖关系。

通过使用中介者模式,可以使系统更易于维护和扩展,同时保持代码的整洁和可读性。

创作不易,如果本篇博客对您有一定的帮助,大家记得关注+留言+点赞哦。

相关推荐
G皮T3 天前
【设计模式】行为型模式(四):备忘录模式、中介者模式
java·设计模式·中介者模式·备忘录模式·memento·mediator
南城花随雪。6 天前
Spring框架之中介者模式 (Mediator Pattern)
中介者模式
多喝热水-多读书1 个月前
Qt C++设计模式->中介者模式
c++·qt·设计模式·中介者模式
java_heartLake1 个月前
设计模式之中介者模式
java·设计模式·中介者模式
严文文-Chris2 个月前
【设计模式-中介者模式】
设计模式·中介者模式
刷帅耍帅2 个月前
设计模式-中介者模式
设计模式·中介者模式
仙魁XAN2 个月前
Unity 设计模式 之 行为型模式 -【中介者模式】【迭代器模式】【解释器模式】
设计模式·迭代器模式·解释器模式·中介者模式
LB_bei2 个月前
设计模式-行为型模式-中介者模式
设计模式·中介者模式
coffee_baby2 个月前
化繁为简:中介者模式如何管理复杂对象交互
java·spring boot·microsoft·交互·中介者模式
星光技术人2 个月前
设计模式---中介者模式
设计模式·中介者模式