簡體中文 | 繁體中文

大話設計模式-----第74章


鳳家女 拐個兒子種田養老去 舊愛,請自重! 異世小男人 娘子請聽話 痞女無敵:娘子,你好壞! 網遊之邊緣頹廢 榮耀之冠 末世之大戰魔法少女 活墓輪世戰 修真在異界 天下寵妃 梔子花開的夏天 百變校花葉星爾 蛇蠍之心 綜影視強買強賣 鐵血帝國 李舜生逆天的足球人生 一起當兵的日子 飛鯊掠濤
第74章

大B:“你是否還記得應用廣泛的MVC分為哪三層?”

小A:“記得,模型層、表現層還有控制層。”

大B:“對,控制層便是位於表現層與模型層之間的中介者。籠統地說MVC也算是中介者模式在框架設計中的一個應用。由於中介者模式在定義上比較鬆散,在結構上和觀察者模式、命令模式十分相像;而應用目的又與結構模式‘門面模式’有些相似。”

小A:“他們有哪些地方相似?”

大B:“在結構上,中介者模式與觀察者模式、命令模式都添加了中間物件——只是中介者去掉了後兩者在行為上的方向。因此中介者的應用可以仿照後兩者的例子去寫。但是觀察者模式、命令模式中的觀察者、命令都是被客戶所知的,具體哪個觀察者、命令的應用都是由客戶來指定的;而大多中介者角色對於客戶程式卻是透明的。當然造成這種區別的原因是由於它們要達到的目的不同。從目的上看,中介者模式與觀察者模式、命令模式便沒有了任何關係,倒是與前面講過的外觀模式有些相似。但是外觀模式是介於客戶程式與子系統之間的,而中介者模式是介於子系統與子系統之間的。這也註定了它們有很大的區別。”

小A:“他們都有什麼區別呢?”

大B:“外觀模式是將原有的複雜邏輯提取到一個統一的介面,簡化客戶對邏輯的使用。它是被客戶所感知的,而原有的複雜邏輯則被隱藏了起來。而中介者模式的加入並沒有改變客戶原有的使用習慣,它是隱藏在原有邏輯後面的,使得程式碼邏輯更加清晰可用。”

小A:“使用中介者模式最大的好處是什麼?”

大B:“使用中介者模式最大的好處就是將同事角色解耦。這帶來了一系列的系統結構改善:提高了原有系統的可讀性、簡化原有系統的通訊協議——將原有的多對多變為一對多、提高了程式碼的可複用性……但是中介者角色集中了太多的責任,所有有關的同事物件都要由它來控制。這不由得讓我想起了簡單工廠模式,但是由於中介者模式的特殊性——與業務邏輯密切相關,不能採用類似工廠方法模式的解決方法。因此建議在使用中介者模式的時候注意控制中介者角色的大校”

小A:“那什麼時候才是中介者模式的使用時機?”

大B:“一組物件以定義良好但是複雜的方式進行通訊,產生了混亂的依賴關係,也導致物件難以複用。中介者模式很容易在系統中應用,也很容易在系統中誤用。當系統出現了‘多對多’互動複雜的物件群,不要急於使用中介者模式,而要先反思你的系統在設計上是不是合理。”

推薦小說