侧边栏壁纸
博主头像
人生短短几个秋

行动起来,活在当下

  • 累计撰写 45 篇文章
  • 累计创建 20 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

设计模式-中介者模式

人生短短几个秋
2025-01-25 / 0 评论 / 0 点赞 / 14 阅读 / 0 字

设计模式 - 中介者模式(Mediator Pattern)

介绍

中介者模式是一种行为设计模式,用于降低多个对象之间的通信复杂度。通过使用中介者模式,对象之间通过一个中介者来进行通信,而不是直接互相通信,从而减少了对象间的依赖关系。

实现

我们以一个聊天室应用为例来展示中介者模式的应用。假设我们有一个聊天室,里面有多个用户,用户之间发送的消息需要通过服务器来转发。

定义中介者接口

首先定义一个中介者接口,它声明了发送消息的方法。

interface ChatMediator {
    void sendMessage(String message, User user);
}

创建具体中介者类

然后创建具体的中介者类,它实现了 ChatMediator 接口,并提供了具体的转发消息的逻辑。

class ChatServer implements ChatMediator {
    private Map<String, User> users = new HashMap<>();

    public void addUser(User user) {
        users.put(user.getName(), user);
        user.setMediator(this);
    }

    @Override
    public void sendMessage(String message, User user) {
        for (User u : users.values()) {
            if (!u.equals(user)) {
                u.receive(message);
            }
        }
    }
}

创建用户类

接着创建用户类,它包含发送和接收消息的方法,并持有一个中介者的引用。

class User {
    private String name;
    private ChatMediator mediator;

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

    public void send(String message) {
        System.out.println(name + " sends: " + message);
        mediator.sendMessage(message, this);
    }

    public void receive(String message) {
        System.out.println(name + " receives: " + message);
    }

    public void setMediator(ChatMediator mediator) {
        this.mediator = mediator;
    }

    public String getName() {
        return name;
    }
}

使用中介者模式

接下来,在主程序中使用中介者模式来模拟聊天室的通信。

public class ChatRoomApp {
    public static void main(String[] args) {
        ChatServer chatServer = new ChatServer();

        User alice = new User("Alice");
        User bob = new User("Bob");
        User charlie = new User("Charlie");

        chatServer.addUser(alice);
        chatServer.addUser(bob);
        chatServer.addUser(charlie);

        alice.send("Hello everyone!");
        bob.send("Hi Alice!");
        charlie.send("Let's start chatting!");
    }
}

使用场景

中介者模式适用于以下情况:

  • 一组对象以定义良好但复杂的方式进行通信,导致类间的依赖关系难以理解和维护。
  • 你想要减少对象之间复杂的依赖关系,从而提高类的可复用性。
  • 你想要简化对象之间的交互,特别是当交互逻辑变得越来越复杂时。

总结

中介者模式通过引入一个中介者对象来简化对象之间的交互,降低了对象间的依赖关系。这种方式不仅增强了代码的可维护性和可扩展性,还能使得对象的职责更加清晰。


以上就是中介者模式的一个实现案例,希望这篇文章能帮助你理解中介者模式的使用方式及其优势。

0

评论区