赞
踩
定义:中介者模式(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队列内的任务就是具体同事对象。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。