一、概念
中介模式(Mediator Pattern):中介模式定义了一个单独的(中介)对象,来封装一组对象之间的交互。将这组对象之间的交互委派给与中介对象交互,来避免对象之间的直接交互。
二、实现
借鉴下参考链接的例子航空管制,为了让飞机在飞行的时候互不干扰,每架飞机都需要知道其他飞机的实时位置,这就需要时刻跟其他飞机通信。很多架飞机相互通信就会变得很复杂,也容易出事,这时候我们需要增加一个中介飞行控制中心,获取每个飞机的实时位置并规划飞机航行路线。
1、飞机
public abstract class Plane {
abstract void sendLocation();
}
public class PlaneA extends Plane {
private AviationControlCenter controlCenter;
public PlaneA(AviationControlCenter controlCenter){
this.controlCenter = controlCenter;
}
@Override
void sendLocation() {
controlCenter.planeRoute("PlaneA 当前位置: " + "北纬39,东经100");
}
}
public class PlaneB extends Plane {
private AviationControlCenter controlCenter;
public PlaneB(AviationControlCenter controlCenter){
this.controlCenter = controlCenter;
}
@Override
void sendLocation() {
controlCenter.planeRoute("PlaneB 当前位置: " + "北纬39,东经116");
}
}
2、飞行控制中心
public class AviationControlCenter {
public void planeRoute(String location) {
System.out.println(location + " | 重新规划路线");
}
}
3、测试类
public class Client {
public static void main(String[] args) {
AviationControlCenter controlCenter = new AviationControlCenter();
Plane planeA = new PlaneA(controlCenter);
Plane planeB = new PlaneB(controlCenter);
planeA.sendLocation();
planeB.sendLocation();
}
}
4、运行结果
参考文章:
极客时间《设计模式》(王争)