目录
一、中介者模式的定义与类型
- 一、中介者模式的定义与类型
- 二、中介者模式的适用场景
- 三、中介者模式的优点
- 四、中介者模式的缺点
- 五、中介者模式相关设计模式
- 六、中介者模式示例
1、定义
- 定义一个封装一组对象如何交互的对象
- 通过使对象明确地相互引用来促进松散耦合,并允许独立地改变他们的交互
2、类型
- 行为型
- 系统中对象之间存在复杂的引用关系,产生的仙湖依赖关系结构混乱且难以理解
- 交互的公共行为,如果需要改变行为则可以增加新的中介者类
- 将一对多转化成了一对一、降低程序复杂度
- 类之间解耦
- 中介者过多,导致系统复杂
- 中介者模式和观察者模式
以在学习群发送消息为例进行代码演示
1、代码结构如下:
2、定义一个学习组类
package com.rf.designPatterns.behavioral.mediator;
/**
* @description: 定义一个学习组类
* @author: xz
*/
public class StudyGroup {
//展示消息的方法
public static void showMessage(User user,String message){
System.out.println(user.getName()+":"+message);
}
}
3、定义一个用户类
package com.rf.designPatterns.behavioral.mediator;
/**
* @description: 定义一个用户类
* @author: xz
*/
public class User {
private String name;
//构造方法
public User(String name) {
this.name = name;
}
//getter、setter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//用户发送消息,由中介者去展示消息
public void showMessage(String message){
StudyGroup.showMessage(this,message);
}
}
4、中介者模式的测试类
package com.rf.designPatterns.behavioral.mediator;
/**
* @description: 中介者模式的测试类
* @author: xz
*/
public class Test {
public static void main(String[] args) {
User xz = new User("xz");
User jack = new User("jack");
xz.showMessage("你好,jack。开始学习java设计模式");
jack.showMessage("你好,xz!现在开始");
}
}
5、运行测试类,如下图:
6、UML类图如下: