中介者模式

定义:中介者模式(Mediator Pattern)又称为调节者模式或调停者模式。用一个中介对象封装一系列的对象交互,中介者使各对象不需要显式的相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

适用场景:

1、系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系结构混乱而且难以复用该对象。

2、想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类。

优点

1、降低了对象之间的耦合性,使得对象易于独立地被复用

2、集中控制交互

3、一对多关联转变为一对一的关联

缺点

1、当同事类太多时,中介者的职责将很大,它会变得复杂而庞大,以至于系统难以维护。

2、中介者承担了较多的责任,一旦中介者出现了问题,整个系统就会受到影响。

生活场景中的应用

1、微信群

2、短信平台

源码应用:

     1) mybatis源码:

mybatis中的SqlSessionFactory就扮演了中介者的角色,它负责创建和管理SqlSession对象。SqlSession是mybatis中用于与数据库交互的核心对象,而SqlSessionFactory则是创建SqlSession对象的工厂类。

当应用程序需要执行一个操作(如查询、添加或更新记录)时,它将向SqlSessionFactory请求一个SqlSession对象。SqlSessionFactory根据需要的配置信息(如数据库连接信息、事务管理器等)创建一个新的SqlSession对象,并将其返回给应用程序。

一旦应用程序获得了SqlSession对象,它就可以使用SqlSession对象来执行数据库操作。当执行完操作后,应用程序需要调用SqlSession的close()方法关闭资源,SqlSession将会被归还给SqlSessionFactory进行资源回收。

通过将SqlSession对象的创建和管理职责交由SqlSessionFactory统一管理,不仅可以保证SqlSession对象的有效性和一致性,同时也可以避免重复创建和销毁SqlSession对象的开销,提高系统性能和稳定性。

     2)JDK源码中的Timer类:

所有的task都放入了Timer类中维护的task队列中。所以Timer就是充当了一个中介者的角色,而task队列内的任务就是具体同事对象。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>