A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zlb820 中级黑马   /  2016-6-14 23:07  /  773 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

中介者模式
定义:
用一个中介对象封装一系列对象的交互,中介者使得各对象不需要显示的相互作用,从而使其松耦合,而且可以独立的改变他们之间的交互。
中介者有以下几部分:
1、Mediator抽象中介者角色
中介者角色定义统一的接口,用于各同事之间的通信。
2、Concrete Mediator
具体的中介者角色协调各个同事角色的协调行为,他依赖于同事角色。
3.Colleague角色
同事角色用于实现真正的业务逻辑,同事角色都知道中介者角色,而且和其他同事角色通信的时候,一定要通过中介角色协作。每个同事类的行为分两种:
一、同事本身的行为,比如改变自己的状态,处理自己的行为,这种方法叫做自发行为。
二、必须依赖中介者才能完成的行为,叫做依赖方法

注:中介者一般只有一个;
        中介者的实现依赖各个同事类(中介者方法中调用的是同事类的方法);
问:为什么同事类需要用构造函数来注入中介者,而中介者使用getter\setter方法来注入同事类?
答:因为同事类必须要中介者,而中介者可以只需要部分同事类。

中介者模式的应用:
优点:
中介者模式的优点就是减少了类之间的依赖,把原来的一对多依赖改为一对一依赖。同事类只依赖中介者,减少了依赖,降低了类与类之间的耦合。
缺点:
中介者将会变得很臃肿,同事类越多中介者将会越大。

使用场景:
中介者适用于多个对象之间紧密耦合的情况,紧密耦合的标准是:在类中出现了蛛网状的结构。

实际应用:
mvc的 前端控制器controller就是一个终结者 他把model和view隔离。

中介者模式很少用到接口或者抽象类,和依赖倒置冲突。
如果两个类真的不能提炼出共性,不必强求两者的抽象。
一般来说,一个中介者抽象只有一个实现者。

应用:
N个对象之间产生了相互的依赖关系。
多个对象有依赖关系,但是依赖的关系不明确或者又发生改变的可能。
产品开发。


1 个回复

倒序浏览
来瞅两眼 加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马