简介
中介者模式(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");
//.....
}
}
优缺点
优点
- 降低了类的复杂度,将一对多转化成了一对一。
- 各个类之间的解耦。
- 符合迪米特原则。
缺点
- 中介者会庞大,变得复杂难以维护。