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

一、概念

中介模式(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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值