栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java设计模式之中介者模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java设计模式之中介者模式

目录

定义

通用抽象中介者代码

使用场景

定义

Define an object that encapsulates how a set of objects interact.Mediator

promotes loose coupling by keeping objects from referring to each other

explicitly,and it lets you vary their interaction independently.(用一个中介对象封装

一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,

而且可以独立地改变它们之间的交互。)

● Mediator 抽象中介者角色抽象中介者角色定义统一的接口,用于各同事角色之间的通信。

● Concrete Mediator 具体中介者角色

具体中介者角色通过协调各同事角色实现协作行为,因此它必须依赖于各个同事角

色。

● Colleague 同事角色

每一个同事角色都知道中介者角色,而且与其他的同事角色通信的时候,一定要通

过中介者角色协作。每个同事类的行为分为两种:一种是同事本身的行为,比如改

变对象本身的状态,处理自己的行为等,这种行为叫做自发行为(SelfMethod),与其他的同事类或中介者没有任何的依赖;第二种是必须依赖中介者

才能完成的行为,叫做依赖方法(Dep-Method)。

通用抽象中介者代码
public abstract class Mediator {

    //定义同事类

    protected ConcreteColleague1 c1;

    protected ConcreteColleague2 c2;

    //通过 getter/setter 方法把同事类注入进来

    public ConcreteColleague1 getC1() {

        return c1;

    }

    public void setC1(ConcreteColleague1 c1) {

        this.c1 = c1;

    }

    public ConcreteColleague2 getC2() {

        return c2;

    }

    public void setC2(ConcreteColleague2 c2) {

        this.c2 = c2;

    }

    //中介者模式的业务逻辑

    public abstract void doSomething1();

    public abstract void doSomething2();

}

ps:使用同事类注入而不使用抽象注入的原因是因为抽象类中不具有每个同事类

必须要完成的方法。即每个同事类中的方法各不相同。

问:为什么同事类要使用构造函数注入中介者,而中介者使用 getter/setter 方式注

入同事类呢?

这是因为同事类必须有中介者,而中介者却可以只有部分同事类。

使用场景

中介者模式适用于多个对象之间紧密耦合的情况,紧密耦合的标准是:在类图中出

现了蜘蛛网状结构,即每个类都与其他的类有直接的联系。

有用请点赞,养成良好习惯!

疑问、交流、鼓励请留言!


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/936578.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号