Java中介者模式(Mediator Pattern)

中介者模式(Mediator Pattern)用于减少多个对象或类之间的通信复杂性。 此模式提供了一个中介类,它通常处理不同类之间的所有通信,并支持通过松散耦合来维护代码。中介者模式属于行为模式类别。

实现实例

在这里通过一个聊天室的示例来演示中介者模式的使用,在聊天室中,多个用户可以向聊天室发送消息,并且聊天室的责任是向所有用户显示消息。在示例中创建了两个类ChatRoomUser。 用户对象将使用ChatRoom方法来共享他们的消息。

MediatorPatternDemo这是一个演示类,它使用User对象来显示它们之间的通信。

中介者模式(Mediator Pattern)示例的结构如下图所示 -

第1步

创建一个聊天室类- ChatRoom,如下代码所示 -
ChatRoom.java

import java.util.Date;

public class ChatRoom {
   public static void showMessage(User user, String message){
      System.out.println(new Date().toString() + " [" + user.getName() + "] : " + message);
   }
}

Java

第2步

创建一个用户类- User
User.java

public class User {
   private String name;

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }

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

   public void sendMessage(String message){
      ChatRoom.showMessage(this,message);
   }
}

Java

第3步

使用User对象显示它们之间的通信。
MediatorPatternDemo.java

public class MediatorPatternDemo {
   public static void main(String[] args) {
      User robert = new User("Robert");
      User john = new User("John");

      robert.sendMessage("Hi! John!");
      john.sendMessage("Hello! Robert!");
   }
}

Java

第4步

验证输出,执行上面的代码得到以下结果 -

Sat Dec 03 17:12:59 CST 2016 [Robert] : Hi! John!
Sat Dec 03 17:12:59 CST 2016 [John] : Hello! Robert!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
中介者模式Mediator Pattern)是一种行为型设计模式,它允许将对象间的通信封装到一个中介对象中,从而使得对象间不再直接相互引用,降低了对象间的耦合度。 下面是一个简单的中介者模式实例,我们假设有三个类:用户(User)、聊天室(ChatRoom)和中介者(ChatMediator)。其中,用户类包含了用户的姓名和中介者实例,聊天室类包含了聊天室名称和中介者实例,中介者类包含了用户列表和聊天室实例,以及处理用户间通信的方法。 User.java ```java public class User { private String name; private ChatMediator chatMediator; public User(String name, ChatMediator chatMediator) { this.name = name; this.chatMediator = chatMediator; } public String getName() { return name; } public void sendMessage(String message) { chatMediator.sendMessage(message, this); } public void receiveMessage(String message) { System.out.println(name + " received message: " + message); } } ``` ChatRoom.java ```java public class ChatRoom { private String name; private ChatMediator chatMediator; public ChatRoom(String name, ChatMediator chatMediator) { this.name = name; this.chatMediator = chatMediator; } public String getName() { return name; } public void sendMessage(String message, User user) { chatMediator.sendMessage(message, user); } } ``` ChatMediator.java ```java import java.util.ArrayList; import java.util.List; public class ChatMediator { private List<User> users; private ChatRoom chatRoom; public ChatMediator(ChatRoom chatRoom) { this.chatRoom = chatRoom; this.users = new ArrayList<>(); } public void addUser(User user) { users.add(user); } public void sendMessage(String message, User user) { for (User u : users) { if (u != user) { u.receiveMessage(message); } } } } ``` 使用中介者模式,我们可以创建多个用户和聊天室,并将它们注册到中介者中,从而实现用户间的通信。 Main.java ```java public class Main { public static void main(String[] args) { ChatRoom chatRoom = new ChatRoom("Java Chat Room", new ChatMediator()); User user1 = new User("Alice", chatMediator); User user2 = new User("Bob", chatMediator); User user3 = new User("Charlie", chatMediator); chatRoom.addUser(user1); chatRoom.addUser(user2); chatRoom.addUser(user3); user1.sendMessage("Hello, everyone!"); } } ``` 输出结果: ``` Bob received message: Hello, everyone! Charlie received message: Hello, everyone! ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智慧浩海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值