跳至主要内容

[GoF] 中介者模式 Mediator

TL;DR

中介者模式可以簡單理解為有一個中心化的「軟體實體」來負責處理來自許多地方提出的需求。

概念

在物件導向的概念中,為了達到高內聚低耦合的效果,會用多個不同物件/模組來拆分各自的權責,這麼做雖然可以確保物件間彼此權責的拆分,但卻可能以為相互引用的太過密集,進而導致這幾個物件/模組之間的緊密耦合,如下圖所示:

mediator

中介者模式(mediator)最主要的目的就是要解除這些物件彼此之間的緊密耦合,讓所有的模組彼此間的溝通都透過 mediator 來進行,而不是直接相互引用。因此當有一個物件需要改動時,不需要改動到其他模組,只需要改動此中介者即可。

以上圖為例,如果 A 模組有更動時,需要連帶更新 D、E、F 這幾個模組的使用方式。但若透過中介者模式,所有模組間的溝通都是透過 mediator 時,因此當 A 模組更新時,只需更動 mediator 即可,不需要修改 D、E、F 的使用方式:

Mediator

生活中有非常多這種中介者模式的概念,例如銀行的放貸就屬於這種,許多人把錢存放在銀行,銀行在把這些人的錢借給需要的人,而不是以 P2P 的方式借款;或者是 B2C 的電商平台也都是類似的概念,不是讓交易者直接私下交易,而是透過平台來促成交易。

參考

Giscus