Mediator(调停者模式)
优点
- 许多对象之间关系错综复杂
- 让这些对象直接联系的话,复杂度和耦合度很高
- 这时候专门设立一个调停者,让所有对象只与调停者联系,降低对象之间的复杂度
缺点
思路
- 一个部门有多个员工
- 每个员工之间工作协调都要提交给经理
- 经理同意管理部门之间的关系调用
代码
package mediator;
public abstract class mediator {
String name;
public mediator(String name) {
this.name = name;
}
void mediator(Employee request, Employee execute, String msg) {
};
}
package mediator;
public class MyMediator extends mediator{
public MyMediator(String name){
super(name);
}
@Override
public void mediator(Employee request, Employee execute, String msg) {
System.out.println("经理:"+name+"收到"+request.name+"发送的"+msg+"请求");
System.out.println("经理:"+name+"给"+execute.name+"派发了"+msg+"任务!");
execute.execute(this,msg);
}
}
package mediator;
public class Employee {
String name;
private Employee(){
}
public Employee(String name) {
this.name = name;
}
public void send(mediator mediator,Employee employee,String msg){
System.out.println("员工:"+name+",需要"+employee.name+"完成"+msg+",提交给了经理:"+mediator.name);
mediator.mediator(this,employee,msg);
}
public void execute(mediator mediator, String msg){
System.out.println("员工:"+name+"正在努力完成经理:"+mediator.name+"派给的工作!");
}
}
package mediator;
public class Main {
public static void main(String[] args) {
MyMediator mediator = new MyMediator("王五");
Employee employee3 = new Employee("张三");
Employee employee4 = new Employee("李四");
employee3.send(mediator,employee4,"加个js脚本");
System.out.println("============================");
employee4.send(mediator,employee3,"写个HTML页面");
}
}
思维图