Mediator(调停者模式)

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页面");
    }
}

思维图

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yuell102/article/details/108005148