资讯专栏INFORMATION COLUMN

中介者模式(Mediator)

Lsnsh / 2667人阅读

摘要:中介者模式一中介者模式定义用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示的相互作用,从而使耦合松散,而且可以独立的改变他们之间的交互角色抽象中介者类具体中介者实现类同事类二具体实现创建抽象中介者对象创建具体中介者对象创建同事

中介者模式

一. 中介者模式 1.1 定义

用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示的相互作用,从而使耦合松散,而且可以独立的改变他们之间的交互.

1.2 角色

抽象中介者类(AbstractMediator).

具体中介者实现类(Mediator).

同事类(Colleague).

二. 具体实现 2.1 创建抽象中介者对象
    public abstract class AbstractMediator {
        private ColleagueA colleagueA;
        private ColleagueB colleagueB;
        public abstract void executeToA();
        public abstract void executeToB();
        public void setColleagueA(ColleagueA colleagueA) {
            this.colleagueA = colleagueA;
        }
        public void setColleagueB(ColleagueB colleagueB) {
            this.colleagueB = colleagueB;
        }
    }
2.2 创建具体中介者对象
    public class Mediator extends AbstractMediator {
        public void executeToA() {
            System.out.println("Mediator executeToA ...");
        }
        public void executeToB() {
            System.out.println("Mediator executeToB ...");
        }
    }
2.3 创建同事类
    public class ColleagueA {
        private AbstractMediator mediator;
        public ColleagueA(AbstractMediator mediator){
            this.mediator = mediator;
        }
        public void print(){
            System.out.println("ColleagueA print ... ");
            mediator.executeToB();
        }
    }
    public class ColleagueB {
        private AbstractMediator mediator;
        public ColleagueB(AbstractMediator mediator){
            this.mediator = mediator;
        }
        public void print(){
            System.out.println("ColleagueB print ...");
            mediator.executeToA();
        }
    }
2.4 调用
    public static void main(String[] args) {
        AbstractMediator mediator = new Mediator();
        ColleagueA colleagueA = new ColleagueA(mediator);
        ColleagueB colleagueB = new ColleagueB(mediator);
        mediator.setColleagueA(colleagueA);
        mediator.setColleagueB(colleagueB);
        colleagueA.print();
        colleagueB.print();
    }
2.5 输出
    ColleagueA print ... 
    Mediator executeToB ...
    ColleagueB print ...
    Mediator executeToA ...
三. 优缺点 3.1 优点

各个同事类之间的解耦.

降低类的复杂度.

3.2 缺点

同事类过多会使中介者庞大,难以维护.

四. 源码
    https://github.com/Seasons20/DisignPattern.git

END

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69633.html

相关文章

  • 设计模式(二十三)介者模式

    摘要:中介者模式就是简化这种关系的模式,有两个角色关系成员中介者。成员,不必包含与他有关系的成员,他只需包含一个中介者,通过中介发消息,是委托给中介。他有一个发消息的方法,中介通过判定成员来确定恢复消息。先看图: showImg(https://user-gold-cdn.xitu.io/2019/5/21/16ada9908dd0b898); 有很多孤立的人这里是3个,如果有100个,是不是图很...

    ztyzz 评论0 收藏0
  • 常用设计模式

    摘要:工厂设计模式工厂设计模式,主要用于进行实例化对象时的解耦操作,避免使用关键字实例化对象,通过反射,根据类名称动态创建对象示例静态工厂模式构造方法私有化获取指定类名称的对象动态代理模式动态代理模式,主要用于对同一接口子类的相同逻辑进行代理操作 工厂设计模式 工厂设计模式,主要用于进行实例化对象时的解耦操作,避免使用new关键字实例化对象,通过反射,根据类名称动态创建对象 示例: pa...

    fizz 评论0 收藏0
  • 一起学设计模式 - 介者模式

    摘要:在地球上最大的中介者就是联合国了,它主要用来维护国际和平与安全解决国际间经济社会文化和人道主义性质的问题。所以对于关系比较复杂的系统,我们为了减少对象之间的关联关系,使之成为一个松耦合系统,我们就需要使用中介者模式。 中介者模式(Mediator Pattern)属于行为型模式的一种,用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独...

    denson 评论0 收藏0
  • 我的Java设计模式-介者模式

    摘要:那在我们的程序设计中有没有这样的模式有的,中介者模式应运而生,目的就是处理这样的情景问题。最后来看客户端的实现,代码如下被攻打,请求支援可以看到,表面上请求还是从发出,但是已经委托了中介者进行业务逻辑和流程的处理。 本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 小时候钟爱战争片,《地道战》、《鸡毛信》、《铁道游击队》一系列的老电影,咦~想起都激动得起鸡皮疙瘩。不过...

    SimonMa 评论0 收藏0
  • Observer和Mediator模式的区别

    摘要:举个例子淘宝商铺卖家在淘宝上开了一个相机店最近都有意愿去买但是觉得价格稍贵,因此暂时不打算入手,想等价格稍微便宜一点后再入手,所以这个人通过淘宝先关注卖家的相机店。等到卖家的相机打折后,淘宝会向这个人推送打折消息。 Observer观察者模式 Observer观察者模式和Pub/sub模式事实上都是同一套路。这种模式建立起了不同对象之间的依赖关系: showImg(https://se...

    wapeyang 评论0 收藏0

发表评论

0条评论

Lsnsh

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<