假設有三個類A、B、C,其中A里有一個B的引用的變數,B中有一個C的引用的變數,C中有一個A的引用變數,用什麼設計模式來解耦這種關係?
針對問題,使用設計模式中的中介者模式可以解耦這種關係。
我們將問題描述的關係UML圖繪製出來,如下:
從上圖的UML圖中我們可以看到三個類之間的依賴關係形成了一個閉環,那麼我們如何能降低這種高度耦合的狀況呢? 這個就可以使用設計模式中的【中介模式】來進行解耦。
中介模式就是用來降低多個對象和類之間的耦合度、降低對象跟類之間的通訊複雜度。通過提供一個中介類,將類之間的耦合部分進行封裝,即將它們耦合的部分提取出出來到中介者模式中,使相互耦合的對象不是顯示的相互引用,從而達到降低耦合的目的。
中介者模式的適用情況就是將對象之間的網狀關係分離為星型結構。
它的優點:
降低類的複雜性,將一對多關係轉換成一對一關係。
各個類之間耦合度降低;
符合迪米特法則;
缺點:中介者類非常龐大,比較難維護
通過中介者模式解耦後的UML圖可以簡化如下:
碼字不易,感謝各位點贊關注一波。
推薦閱讀: