您的位置:首页 > 其它

中介者模式

2016-02-08 18:34 183 查看
    在软件系统中,特别是一些交互及系统中,常有互相之间包含复杂行为联系的大量对象。可以想象一下用过的许多桌面软件,常包含许多的功能模块和显示模块,用户产生一个行为时,多个模块可能都需要产生相应。
    如果这些对象间都是直接的与相关的对象通信,那整个系统内的关联关系将会非常复杂,难以维护。而且耦合度很高,难以修改和扩展。如过能出现一位交警叔叔来作为这复杂的路面情况的指挥者就好了,终结者模式就是这种思想来解决这个问题。通过引入一个中介者,所有的对象都直接与他通信,而不是其他的不定量的对象。这将对象间的耦合度大大降低了,将复杂的多对多的网状结构简化成了一对多的星状结构。同时,将这些对象关系统一管理也便于维护、扩展。
    中介者模式(Mediator Pattern):用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式,它是一种对象行为型模式。
    


    Mediator抽象中介者。
    ConcreteMediator 具体中介者
    Colleague 抽象业务类,包含抽象中介者类型的成员,以便交互
    ConcreteColleague 具体业务类
    
    上图是一个最简单的中介者模式的结构图。中介者通常可以起到两种作用:

中转作用:为业务对象间的交互传递消息,起到中转站的作用
协调控制作用:中介者可以作为一个对象间复杂关系的管理者,通过他的协调和对关系的封装,使系统中的复杂关系更加清晰、有条理。

    
    总结:
        优点:

降低对象间的耦合度
降低系统复杂度
提高可维护性
提高可扩展性,增加新业务类无需修改原有业务类。通过集成原有中介者,也可以无修改的扩展中介者。

        缺点:

中介者可能职责过重,逻辑过于复杂,容易出错

        适用场景:

系统中存在大量关系复杂的类
希望通过统一管理关系,简化关系模型同时提高扩展性
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: