源代码
GitHub源代码
1.本文目标
本文目标是为了让大家认识并理解中介者模式
2.基本套路
定义:定义一个封装一组对象如何交互的对象
类型:行为型
选择关键点:复杂的交互关系是否有共性可被中介者承担
设计原则:遵循迪米特,破坏单一职责
使用概率:10%
难度系数:中
3.适用场景
1.系统中对象之间存在复杂的引用关系,产生的相互依赖关系结构混乱且难以理解
2.交互的公共行为,如果需要改变行为则可以增加新的中介者类
4.使用步骤
用栗子能更好的说明问题,请继续往下看
5.举个栗子
我们用具体的代码去更好的理解这个设计模式
5.1栗子说明
- 背景:风清扬和令狐冲交流,传授独孤九剑
- 目的:用中介者模式模拟
5.2使用步骤
实现代码如下:
步骤1.创建中介者,可以理解为一个群,大家都可以在这里面说话
public class StudyGroup {
public static void showMessage(User user, String message){
System.out.println(new Date().toString() + " [" + user.getName() + "] : " + message);
}
}
步骤2.创建用户User
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;
}
/**
* 交给中介者展示信息
* @param message
*/
public void sendMessage(String message) {
StudyGroup.showMessage(this, message);
}
}
步骤3. 测试
public static void main(String[] args) {
User fengqingyang = new User("风清扬");
User linghuchong = new User("令狐冲");
fengqingyang.sendMessage("传授你独孤九剑");
linghuchong.sendMessage("OK");
}
6.优点
- 将一对多转化成了一对一,降低程序复杂度
- 类之间解耦
7.缺点
- 中介者过多,导致系统复杂
8.总结
本文只是对中介者模式进行一个分享,接下来会从创建型模式,结构型模式,行为型模式,这三大类展开一个系列分享,大家可以持续进行关注,信仰年輕的设计模式,蟹蟹啦。
网友评论