定義:中介者模式(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隊列內的任務就是具體同事對象。