設(shè)計模式:中介者模式
什么是中介者模式
中介者模式(Mediator Pattern),是為了“定義一個封裝了對象間交互關(guān)系的對象”。這種方式避免了顯示調(diào)用其他類,促進了類間的松耦合,并且使得類間交互關(guān)系本身可以單獨修改。又叫調(diào)停模式。
一句話歸納
朋友圈:統(tǒng)一管理網(wǎng)狀資源
代碼
一說到中介,我們自然而然地會想起來“房地產(chǎn)中介”,畢竟多數(shù)的大學(xué)生畢業(yè)后都會從租房開始,就會和房地產(chǎn)中介打交道,學(xué)會畢業(yè)后的第一堂課,當然了,家境殷實,每個城市都有房子的除外……
房東通過中介把自己名下幾百套房產(chǎn)都出租,租客通過中介找一個房子住,而中介手里會有很多房東和租客的資源。

適用性
以下場景我建議你考慮使用
N個對象之間產(chǎn)生了相互的依賴關(guān)系(N>2)。比如機場調(diào)度中心、MVC框架、媒體網(wǎng)關(guān)、中介服務(wù)。
多個對象有依賴關(guān)系,但是依賴的行為尚不確定或者有發(fā)生改變的可能,在這種情況下一般建議采用中介者模式,降低變更引起的風(fēng)險擴散。
產(chǎn)品開發(fā)。一個明顯的例子就是MVC框架,把中介者應(yīng)用到產(chǎn)品中,可以提升產(chǎn)品的性能和擴展性,但是對項目開發(fā)就未必,因此項目是以交付投產(chǎn)為目標,而產(chǎn)品則是以穩(wěn)定、高效、擴展為宗旨。
局限性
以下場景我建議你謹慎使用
中介者會龐大,變得復(fù)雜難以維護,同事類越多,中介者邏輯越復(fù)雜。
注意
為什么同事類要使用構(gòu)造函數(shù)注入中介者,而中介者可以使用getter/setter方式注入同事類呢?這是因為同事類必須有中介者,而中介者卻可以只有部分同事類。
寫在最后
好兄弟可以點贊并關(guān)注我的公眾號“javaAnswer”,全部都是干貨。
