21 中介者模式

2022-06-05 21:51:11 字數 1595 閱讀 6946

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

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

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

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

例:

中介者模式uml結構圖:

例:mvc 框架,其中c(控制器)就是 m(模型)和 v(檢視)的中介者。

窗體的form物件(每個控制項之間的通訊都是依靠form物件完成的(通過事件機制進行通訊)(事件機制的執行是在form物件中完成的),這樣使得每個控制項內部不必關注與其他控制項的通訊,降低了耦合度)或者web介面aspx,以及想定製乙個分布在多個類中的行為,而又不想生成太多的子類的場合。

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

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

外觀(門面)模式與中介者模式的區別:

外觀(門面)模式關注的是這組複雜物件如何與外界通訊

中介者模式關注的是這組複雜物件之間的內部通訊

觀察者模式與中介者模式的聯絡:

可以組合使用,來實現當同事物件發生改變的時候,通知中介者物件,讓中介者物件去進行其他相關物件的互動。

例(聯合國與和平):

//聯合國機構

abstract class unitednations

//聯合國安全理事會

class unitednationssecuritycouncil : unitednations

}public iraq colleague2

}public override void declare(string message, country colleague)

else}}

//國家

abstract class country

}//美國

class usa : country

//宣告

public void declare(string message)

//獲得訊息

public void getmessage(string message)

}//伊拉克

class iraq : country

//宣告

public void declare(string message)

//獲得訊息

public void getmessage(string message)

}class program

}

設計模式 21 中介者模式

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

19 中介者模式

中介者模式主要解決的問題 當有多個類之間有相互呼叫的關係時,如果將這些類相互關聯在一起,那麼當呼叫方式發生變化時,可能需要去每個類中去修改呼叫方式。這樣的修改會就會導致維護麻煩。中介者模式的根本還是做解耦。我在網上看了很多人解釋的中介者模式和他們的舉例,方式都不大一樣,但是根據自己的理解,中介者模式...

設計模式17 中介者模式

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