JS設計模式(11)中介者模式

2022-03-10 08:38:00 字數 1488 閱讀 6831

中介者模式:物件和物件之間借助第三方中介者進行通訊。

定義:用乙個中介物件來封裝一系列的物件互動,中介者使各物件不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的互動。

主要解決:物件與物件之間存在大量的關聯關係,這樣勢必會導致系統的結構變得很複雜,同時若乙個物件發生改變,我們也需要跟蹤與之相關聯的物件,同時做出相應的處理。

何時使用:多個類相互耦合,形成了網狀結構。

如何解決:將上述網狀結構分離為星型結構。

應用例項:1、中國加入 wto 之前是各個國家相互**,結構複雜,現在是各個國家通過 wto 來互相**。 2、機場排程系統。 3、mvc 框架,其中c(控制器)就是 m(模型)和 v(檢視)的中介者。

優點:1、降低了類的複雜度,將一對多轉化成了一對一。 2、各個類之間的解耦。 3、符合迪公尺特原則。

缺點:中介者會龐大,變得複雜難以維護。

使用場景:1、系統中物件之間存在比較複雜的引用關係,導致它們之間的依賴關係結構混亂而且難以復用該物件。 2、想通過乙個中間類來封裝多個類中的行為,而又不想生成太多的子類。

注意事項:不應當在職責混亂的時候使用。

一場測試結束後,公布結果:告知解答出題目的人挑戰成功,否則挑戰失敗。

const player = function

(name)

player.prototype.win = function

() player.prototype.lose = function

() const playermiddle = (function() ,

win:

function

(name)

},lose:

function

(name)

},show:

function

()

for(let loser of losearr)

},}}())

const a = new player('a 選手')

const b = new player('b 選手')

const c = new player('c 選手')

a.win()

b.win()

c.lose()

//a 選手挑戰成功;

//b 選手挑戰成功;

//c 選手挑戰失敗;

在這段**中 a、b、c 之間沒有直接發生關係,而是通過另外的 playermiddle 物件建立鏈結,姑且將之當成是中介者模式了。

設計模式 21 中介者模式

中介者模式 用乙個中介物件來封裝一系列的物件互動 中介者 就像我們在租房子一樣,有租房子的中介 抽象中介者 mediator package com.actionpattern.intermediary.edition1 抽象中介者 mediator public abstract class me...

設計模式17 中介者模式

中介者模式 mediator pattern 是用來降低多個物件和類之間的通訊複雜性。這種模式提供了乙個中介類,該類通常處理不同類之間的通訊,並支援松耦合,使 易於維護。中介者模式屬於行為型模式。不應當在職責混亂的時候使用。建立中介類 聊天室,負責傳送通訊 include include inclu...

設計模式整理 12 中介者模式

學習 android 原始碼設計模式解析與實踐 系列筆記 生活中經常能聽到或接觸到各種 中介者 比如買房子或者租房,可能會通過房屋中介 買二手車會有二手車中介 找工作也可以通過中介。中介者模式屬於行為型模式。中介者模式包裝了一系列物件相互作用的方式,使得這些物件不必相互明顯作用。從而使它們可以鬆散耦...