中介者模式
定义:
用一个中介对象封装一系列对象的交互,中介者使得各对象不需要显示的相互作用,从而使其松耦合,而且可以独立的改变他们之间的交互。
中介者有以下几部分:
1、Mediator抽象中介者角色
中介者角色定义统一的接口,用于各同事之间的通信。
2、Concrete Mediator
具体的中介者角色协调各个同事角色的协调行为,他依赖于同事角色。
3.Colleague角色
同事角色用于实现真正的业务逻辑,同事角色都知道中介者角色,而且和其他同事角色通信的时候,一定要通过中介角色协作。每个同事类的行为分两种:
一、同事本身的行为,比如改变自己的状态,处理自己的行为,这种方法叫做自发行为。
二、必须依赖中介者才能完成的行为,叫做依赖方法
注:中介者一般只有一个;
中介者的实现依赖各个同事类(中介者方法中调用的是同事类的方法);
问:为什么同事类需要用构造函数来注入中介者,而中介者使用getter\setter方法来注入同事类?
答:因为同事类必须要中介者,而中介者可以只需要部分同事类。
中介者模式的应用:
优点:
中介者模式的优点就是减少了类之间的依赖,把原来的一对多依赖改为一对一依赖。同事类只依赖中介者,减少了依赖,降低了类与类之间的耦合。
缺点:
中介者将会变得很臃肿,同事类越多中介者将会越大。
使用场景:
中介者适用于多个对象之间紧密耦合的情况,紧密耦合的标准是:在类中出现了蛛网状的结构。
实际应用:
mvc的 前端控制器controller就是一个终结者 他把model和view隔离。
中介者模式很少用到接口或者抽象类,和依赖倒置冲突。
如果两个类真的不能提炼出共性,不必强求两者的抽象。
一般来说,一个中介者抽象只有一个实现者。
应用:
N个对象之间产生了相互的依赖关系。
多个对象有依赖关系,但是依赖的关系不明确或者又发生改变的可能。
产品开发。
|
|