实战java设计模式(十九)中介者模式

1 介绍

中介者模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。

2 例子

小区居民针对物业费情况要做一个讨论,每个居民都是依赖关系,要获取对方的信息,为了减少这种耦合,可以采用中介在中间传话的方式。

2.1 中介者

//中介者
class Mediator{
    //维护一个信息表
    private String nowInfor="";
    //获取
    public String getNowInfor() {
        return nowInfor;
    }
    //添加信息
    public void add(String s){
        this.nowInfor=this.nowInfor+"|"+s;
    }
}

2.2 住户抽象

interface Household{
    //听中介说别人的情况
    void listen();
    //表达自己的意见
    void say();
}

每一个住户都要听要说。

2.3 住户实体

//小王
class Xiaowang implements Household {
    Mediator mediator;

    Xiaowang(Mediator mediator) {
        this.mediator = mediator;
    }

    @Override
    public void listen() {
        System.out.println("小王获取的信息:" + mediator.getNowInfor());
    }

    @Override
    public void say() {
        mediator.add("小王说物业费太贵了");
    }
}

//老钱
class Laoqian implements Household {
    Mediator mediator;

    Laoqian(Mediator mediator) {
        this.mediator = mediator;
    }

    @Override
    public void listen() {
        System.out.println("老钱获取的信息:" + mediator.getNowInfor());
    }

    @Override
    public void say() {
        mediator.add("老钱说物业费可以接受");
    }
}
//刘姐
class Liujie implements Household {
    Mediator mediator;

    Liujie(Mediator mediator) {
        this.mediator = mediator;
    }

    @Override
    public void listen() {
        System.out.println("刘姐获取的信息:" + mediator.getNowInfor());
    }

    @Override
    public void say() {
        mediator.add("刘姐说物业费每个人都应该交");
    }
}

2.4 测试主类

public class Main {
    public static void main(String[] args) {
        //创建一个中介者
        Mediator mediator = new Mediator();

        //创建三个住户
        Household xiaowang = new Xiaowang(mediator);
        Household liujie = new Liujie(mediator);
        Household laoqian = new Laoqian(mediator);

        //中介上门依次获得意见
        xiaowang.listen();
        xiaowang.say();
        liujie.listen();
        liujie.say();
        laoqian.listen();
        laoqian.say();
    }
}

运行结果:

小王获取的信息:
刘姐获取的信息:|小王说物业费太贵了
老钱获取的信息:|小王说物业费太贵了|刘姐说物业费每个人都应该交

3 总结

中介者模式关键就是一个中介者在各个对象之间穿梭,这个中介者一般是聚合到对象中的,可以根据具体的逻辑在中介者对象里面编写实现,比如投票、捐款等等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值