去耦之中介者模式

中介者模式

中介者模式很好的詮釋了迪米特法則,任意兩個(gè)不相關(guān)的對(duì)象之間如果需要關(guān)聯(lián),那么需要通過(guò)第三個(gè)類來(lái)進(jìn)行。中介者就是把一組對(duì)象進(jìn)行封裝,屏蔽了類之間的交互細(xì)節(jié),使不同的類直接不需要持有對(duì)方引用也可以進(jìn)行訪問(wèn)。

中介者M(jìn)ediator會(huì)持有同事類(就是需要處理交互邏輯的對(duì)象)Colleague的引用,同時(shí)每個(gè)colleague也會(huì)持有Mediator一份引用。這樣colleague如果有任何和別的類交互的請(qǐng)求就會(huì)發(fā)給Mediator,對(duì)改組對(duì)象進(jìn)行了解耦合。其實(shí)我們平時(shí)經(jīng)常寫的視圖控制器本身就是一個(gè)中介中,它來(lái)控制著不同對(duì)象之間的交互行為。

應(yīng)用場(chǎng)景

  • 對(duì)象間交互雖然定義明確然而非常復(fù)雜,導(dǎo)致一組對(duì)象彼此相互依賴而且難以理解;
  • 因?yàn)閷?duì)象引用了許多其他對(duì)象并與其通訊,導(dǎo)致對(duì)象難以復(fù)用;
  • 想要定制一個(gè)分布在多個(gè)類中的邏輯或行為,又不想生成太多子類。

中介者的優(yōu)缺點(diǎn)

  • 優(yōu)點(diǎn)
    Mediator出現(xiàn)減少了各個(gè)Colleague的耦合,使得可以獨(dú)立地改變和復(fù)用各個(gè)Colleague類和Mediator,由于把對(duì)象如何寫作進(jìn)行了抽象,將中介者作為一個(gè)獨(dú)立的概念并將其封裝在一個(gè)對(duì)象中,這樣關(guān)注的對(duì)象就從對(duì)象各自本身的行為轉(zhuǎn)移到它們之間的交互上,也就是站在一個(gè)更宏觀的角度去看待系統(tǒng)。

  • 缺點(diǎn)
    由于ConcreteMediator控制了集中化,于是就把交互復(fù)雜性變?yōu)榱酥薪檎叩膹?fù)雜性,這就使得中介者會(huì)變得比任何一個(gè)ConcreteColleague都復(fù)雜。

關(guān)于中介者模式參考的幾篇博文

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 場(chǎng)景問(wèn)題# 1.1 如果沒(méi)有主板## 大家都知道,電腦里面各個(gè)配件之間的交互,主要是通過(guò)主板來(lái)完成的(事實(shí)上主...
    七寸知架構(gòu)閱讀 2,301評(píng)論 0 56
  • 意圖 用一個(gè)中介對(duì)象來(lái)封裝一系列的對(duì)象交互。中介者使各對(duì)象不需要顯式地相互引用,從而使其耦合松散,而且可以獨(dú)立地改...
    tomas家的小撥浪鼓閱讀 1,216評(píng)論 0 0
  • 我們使用的電腦,你完成的任何一個(gè)功能都需要cpu、內(nèi)存、顯卡、鍵盤、顯示器等這些零件相互調(diào)用才能完成功能,如果讓這...
    西木柚子閱讀 1,047評(píng)論 2 5
  • 簡(jiǎn)介用一個(gè)中介對(duì)象來(lái)封裝一系列的對(duì)象交互。中介者使各對(duì)象不需要顯示地相互引用,從而使其耦合松散,而且可以獨(dú)立地改變...
    Mitchell閱讀 470評(píng)論 0 0
  • 一路西南,耳機(jī)里回響著優(yōu)雅的鋼琴音韻,蜷縮在臥鋪車廂,癡癡地望著窗外倒退的原野,天空,淋漓的小雨打濕了車窗,也滋潤(rùn)...
    久生人閱讀 588評(píng)論 0 2

友情鏈接更多精彩內(nèi)容