本系列主要記錄設計模式的意圖是什麼,它要解決一個什麼問題,什麼時候可以使用它;它是如何解決的,掌握它的結構圖,記住它的關鍵代碼;能夠想到至少兩個它的應用實例,一個生活中的,一個軟件中的;這個模式的優缺點是什麼,其有哪些使用場景,在使用時要注意什麼。
尊重作者,轉載請註明曄陽的Bloghttp://blog.csdn.net/hacke2
23.中介者模式
主要解決:對象與對象之間存在大量的關聯關係,這樣勢必會導致系統的結構變得很複雜,同時若一個對象發生改變,我們也需要跟蹤與之相關聯的對象,同時做出相應的處理
什麼時候使用:多個類相互耦合,形成了網狀結構
如何解決 :將上述網狀結構分離爲星型結構
結構圖:
關鍵代碼:對象 Colleague 之間的通信封裝到一個類種單獨處理
應用實例:1 、中國加入WTO,之前是各個國家相互貿易,結構複雜,現在是各個通過WTO來互相貿易 2、機場調度系統 3、 MVC框架,其中C(控制器)就是M和V的中介者
優點: 1、降低了類的複雜度將一對多轉化成了一對一 2、各個類之間的解耦 3、符合迪米特原則
缺點: 1、中介者會龐大,變得複雜難以維護
使用場景:1、 系統中對象之間存在比較複雜的引用關係,導致他們之間的依賴關係結構混亂而且難以複用該對象。
2、 想通過一箇中間類來封裝多個類中的行爲,而又不想生成太多的子類。
注意事項:不應當在職責混亂的時候使用