在開發大型系統時,常常會發現各個物件之間的溝通愈來愈複雜,像是編織成了一張複雜的蜘蛛網。每個物件相互依賴,任何改動都可能牽一髮而動全身。這時候中介者模式就能幫助我們化繁為簡,成為一個「協調者」,讓物件之間的溝通變得簡單清晰。
什麼是中介者模式?
中介者模式是一種行為型設計模式,它讓物件之間的溝通透過一個中介者來進行,從而減少彼此的直接依賴。想像你在一家公司工作,當你需要和不同部門溝通時,不必一個個去找各部門的人,而是透過人資部門(HR)來協調。HR 就是中介者,負責傳遞訊息,讓各部門之間的溝通變得更高效且有條理。
中介者模式的應用:聊天室
一個典型的例子就是聊天室。在聊天室裡沒有中介者的話,每個使用者都必須知道其他所有使用者,才能互相發送訊息,這會讓系統變得非常複雜。但透過中介者模式,使用者只需和中介者溝通,而中介者負責將訊息傳遞給其他使用者。這樣一來,無論聊天室裡有多少人,使用者之間都不需要直接交互,大大簡化了系統的結構設計。
中介者模式的優點與缺點
中介者模式的最大優勢是「解耦」,物件不再需要彼此依賴,這讓系統結構更加清晰,便於維護和擴展。然而隨著系統變大,中介者本身可能會變得非常複雜,成為一個臃腫的「神經中樞」。所以在使用中介者模式時,我們也需要小心控制中介者的複雜度。
總結一下,中介者模式非常適合在需要協調多個物件互動的場景中使用,像是聊天室、事件通知系統等。透過中介者模式我們可以有效地減少物件間的依賴關係,讓系統更靈活。但同時也需要注意不要讓中介者變得過於複雜。
想透過實際範例來理解設計模式,可以參考我今年在iThome鐵人賽上發表的文章。
https://ithelp.ithome.com.tw/articles/10348742