(行为型模式)中介者模式

55 阅读1分钟

简介

中介者模式(Mediator) ,用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。简单来说就是一个传话筒。

例子

在微服务架构下,服务和服务之间的通信要靠rpc去进行远程通信。如果不使用rpc的方式就需要项目和项目之间进行依赖关联,这样就会导致服务之间不好管理,存在服务治理问题,这就需要引入一个注册中心,这个注册中心就是我们的中介。

public class Registy {

    Map<String,IService> map = new HashMap<>(8);
    
    //服务治理
    public boolean regist(String serviceName,IService service){
        map.put(serviceName,service);
        return true;
    }

    //获取服务
    public IService get(String serviceName){
        return map.get(serviceName);
    }
}
public interface IService {
}
public class AService implements IService{

    Registy registy;
    AService(){
        registy.regist("aService",this);
    }

    public void a(){
        IService bService = registy.get("bService");
        //.....
    }

}
public class BService implements IService{

    Registy registy;
    BService(){
        registy.regist("bService",this);
    }

    public void b(){
        IService aService = registy.get("aService");
        //.....
    }

}

优缺点

优点

  • 降低了类的复杂度,将一对多转化成了一对一。
  • 各个类之间的解耦。
  • 符合迪米特原则。

缺点

  • 中介者会庞大,变得复杂难以维护。