中介模式Mediator


中介平台架构 中介公司框架结构_中介平台架构


场景


假如没有总经理,下面有三个部门,财务部,市场部,研发部。财务部要发工资,让大家和对公司需要跟市场部和研发部都通气。市场部要接个新项目,需要研发部技术支持,需要财务部处理资金。市场部跟各个部门打交道。财务部发钱了,需要跑去和研发部和市场部打交道。研发部研发产品,市场部做调研,销售缺少资金又需要去找财务部。在这种情况下,虽然只有三个部门但是非常乱。者是因为在未说明的情况下,我们把这组织长了以中国网状结构的图形组织关系。多对对。





实际上,倘若公司有了总经理(当然现实世界也的确是这样,这样就非常好)各个部门有什么事情都报告总经理,总经理再通知相关部门。



这就是一个中介者模式。中经理起到一个中介协调的关系。


































核心:如果一个系统中对象之间的联系呈现为网状结构,对象之间存在大量的多对多关系,将导致关系及其复杂,这些对象成为“同事关系”



我们引入一个中介者模式,使各个同事对象只跟中介者对象打交道,将复杂的网络结构化解为如下的星型结构。





中介者模式各个结构作用:



抽象中介者,定义了同事对象到中介者对象的接口



抽象同时类:



具体中介者对象,实现抽象类的方法,它需要知道所有具体同时类,并从具体同事接受消息,向具体同事对象发出命令。



具体同事类:每个具体同事只知道自己的行为,而不了解其他同事类的情况,但它们都认识中介者模式。





中介者模式的本质:



解耦多个同事对象之间的交互关系。每个对象都持有中介者对象的引用,只跟中介者对象打交道。我们通过中介者对象统一管理这些交互关系





开发中遇到场景:



MVC模式(model, view, controller)。M和V都和他打交道



窗口游戏程序:窗口软件开发中窗口对象也是一个中介者对象。



图形界面开发GUI中,多个组件之间的交互,可以通过引入一个中介者对象来解决。可以是整体的窗口对象或者DOM对象



Java.lang.reflect.Method#invoke();