中介者模式,它的重点在哪儿,你能说说吗?
中介者模式和代理模式,该如何区分呢?

中介者模式(Mediator Pattern),用来降低多个对象和类之间的通信复杂度,通过一个中介者处理不同类之间的通信。它是一种行为型模式。
中介者模式的重点:处理不同类之间的通信。
业务场景:想通过一个中间类来处理多个类中的行为。
关键代码:同级对象之间的通信封装到一个类中处理。
下面看UML类图:

类图说明:两个单独的类,一个用户类,一个聊天室。聊天室类充当中介者,负责用户之间的通信。
代码实现步骤:
1.用户类;
/**
* 1. 用户
* @author 程就人生
* @Date
*/
public class User {
// 用户名称
private String name;
public User(String name) {
this.name = name;
}
// 发送消息
public void sendMessage(String msg){
ChatRoom.sendMessage(this, msg);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2. 中介者聊天室;
/**
* 2.中介者,聊天室
* @author 程就人生
* @Date
*/
public class ChatRoom {
// 发送消息
public static void sendMessage(User user, String msg){
System.out.println(user.getName() + ":" + msg);
}
}
3.测试代码;
public static void main(String[] argo){
new User("张三").sendMessage("今晚吃鸡吗?");
new User("李四").sendMessage("没问题,老时间不见不散!");
new User("王五").sendMessage("抱歉,我要陪女友!");
new User("赵柳").sendMessage("哎,重色轻友,没救了!");
}
运行结果:
张三:今晚吃鸡吗?
李四:没问题,老时间不见不散!
王五:抱歉,我要陪女友!
赵柳:哎,重色轻友,没救了!
这段代码的意思是:用户通过聊天室向朋友们发送消息,聊天室充当了中介者角色,聊天室统一处理用户间的信息发送。
最后总结
中介者模式,重在同级对象之间的通信。它使用一个类来处理同级对象之间的通信行为。从而很好地把网状结构分离成星型结构。
思考题:现在你看出来,它和代理模式的区别了吗?
网友评论