行为型(十一) - 中介模式

一、概念

中介模式(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、运行结果
中介模式运行结果.png

参考文章:
极客时间《设计模式》(王争)

你可能感兴趣的:(设计模式,中介者模式)