中介者模式

来源:互联网 发布:爱知产业大学 推荐入学 编辑:程序博客网 时间:2024/05/14 10:40

在面向对象的设计中是鼓励把行为分散到不同的对象中的,虽然把行为分散到不同的对象之间能增加复用性,但是这样的话可能会导致对象与对象相互关联的越来越多,这样的话就会使对象很难在不依赖对象的情况下独立工作,而且由于行为分布于多个对象,如果我们要去修改某个行为的话可能就很难的去修改,这样的话我们去创建的类就会越来越多,通过这样的方式去支持应用程序的新行为。

中介者模式的话其实就是让对象的交互在一个中介者中进行处理,其他的对象不需要去进行彼此的交互,这样可以松散耦合,减少了它们之间的依存的关系。

在现实生活中其实中介者模式也是在很多方面都存在的,就比如说我们经常使用的电脑如果缺乏主板,那么CPU,显卡,声卡这些都无法与外界直接进行交互,其实这就是一个中介者。

在中介者模式中有几个概念我们是需要知道的,如下所示

1、抽象的中介者接口Mediator,这里面一般定义的是用于各个colleague交互的一般的行为

2、具体中介者实现对象ConcreteMeditor主要就是去维护各个同事对象,负责协调各个同事对象之间的交互关系,就好比电影中的一个导演,导演应该知道所有的参与影片的角色以及场景的变换,如果电影在这拍摄期间的需求有任何的改变,导演应该是第一个知道的,然后去进行资源和人力的调整。

3、抽象的同事类Colleague主要就是用于约束同事对象的类型,并且可以去实现一些同事类当中要进行交互的一些公共的功能。

4、具体的同事类ConcreteColleague 首先肯定要先实现自己的业务,如果要和其他的同事进行交互的话,就去通过引用的中介者来进行交互,一般来说每一个具体的同事类的对象都会去引用中介者对象


中介者模式的主要应用场景

对象之间的交互很复杂时,也就是说如果导致一组对象之间相互依赖这样耦合性会很强。

对象引用了很多其他的对象导致对象很难进行复用

想要做一个分布在多个类中的逻辑或者是行为,但是不想生成太多的类的。


当然如果我们使用了中介者模式的话,是以中介者内部的复杂的业务逻辑的判断去取代了交互的复杂性,因为中介者去封装了和合并了colleague的各种的协作的逻辑,所以中介者可能会变得很复杂很难进行维护。这样的话其实我们可以去使用策略模式来进行分解。

原创粉丝点击