免费看欧美黑人毛片-免费看毛片网站-免费看毛片的网站-免费看久久-中文字幕日韩欧美-中文字幕日韩精品一区

您現在的位置:首頁 > IT認證 > JAVA >

Java設計模式的中介者模式


  一、引子

  中介在現實生活中并不陌生,滿大街的房屋中介、良莠不齊的出國中介……。它們的存在是因為它們能給我們的生活帶來一些便利:租房、買房用不著各個小區里瞎轉;出國留學也不用不知所措。

  中介者模式在程序設計中也起到了類似的作用。

  二、定義與結構

  GOF給中介者模式下的定義是:用一個中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式地相互引用,從而使其耦合松散,而且可以獨立地改變它們之間的交互。簡單點來說,將原來兩個直接引用或者依賴的對象拆開,在中間加入一個“中介”對象,使得兩頭的對象分別和“中介”對象引用或者依賴。

  當然并不是所有的對象都需要加入“中介”對象。如果對象之間的關系原本一目了然,中介對象的加入便是“畫蛇添足”。

  來看下中介者模式的組成部分吧。

  1) 抽象中介者(Mediator)角色:抽象中介者角色定義統一的接口用于各同事角色之間的通信。

  2) 具體中介者(Concrete Mediator)角色:具體中介者角色通過協調各同事角色實現協作行為。為此它要知道并引用各個同事角色。

  3) 同事(Colleague)角色:每一個同事角色都知道對應的具體中介者角色,而且與其他的同事角色通信的時候,一定要通過中介者角色協作。

  來自《設計模式》一書的類圖:

  由于中介者的行為與要使用的數據與具體業務緊密相關,抽象中介者角色提供一個能方便很多對象使用的接口是不太現實的。所以抽象中介者角色往往是不存在的,或者只是一個標示接口。如果有幸能夠提煉出真正帶有行為的抽象中介者角色,我想同事角色對具體中介者角色的選擇也是策略的一種應用。

  “恰到好處,過猶不及”。適合自己系統的便是最好的。

  三、進一步討論

  是否還記得應用廣泛的MVC分為哪三層?模型層(Model)、表現層(View)還有控制層(ControlMediator)?刂茖颖闶俏挥诒憩F層與模型層之間的中介者。籠統地說MVC也算是中介者模式在框架設計中的一個應用。

  由于中介者模式在定義上比較松散,在結構上和觀察者模式、命令模式十分相像;而應用目的又與結構模式“門面模式”有些相似。

  在結構上,中介者模式與觀察者模式、命令模式都添加了中間對象――只是中介者去掉了后兩者在行為上的方向。因此中介者的應用可以仿照后兩者的例子去寫。但是觀察者模式、命令模式中的觀察者、命令都是被客戶所知的,具體哪個觀察者、命令的應用都是由客戶來指定的;而大多中介者角色對于客戶程序卻是透明的。當然造成這種區別的原因是由于它們要達到的目的不同。

  從目的上看,中介者模式與觀察者模式、命令模式便沒有了任何關系,倒是與前面講過的門面模式有些相似。

  但是門面模式是介于客戶程序與子系統之間的,而中介者模式是介于子系統與子系統之間的。這也注定了它們有很大的區別:門面模式是將原有的復雜邏輯提取到一個統一的接口,簡化客戶對邏輯的使用。它是被客戶所感知的,而原有的復雜邏輯則被隱藏了起來。而中介者模式的加入并沒有改變客戶原有的使用習慣,它是隱藏在原有邏輯后面的,使得代碼邏輯更加清晰可用。

  前面已經陸陸續續的將中介者模式的特點寫了出來。這里再總結一下。使用中介者模式最大的好處就是將同事角色解耦。這帶來了一系列的系統結構改善:提高了原有系統的可讀性、簡化原有系統的通信協議――將原有的多對多變為一對多、提高了代碼的可復用性……

  但是中介者角色集中了太多的責任,所有有關的同事對象都要由它來控制。這不由得讓我想起了簡單工廠模式,但是由于中介者模式的特殊性――與業務邏輯密切相關,不能采用類似工廠方法模式的解決方法。因此建議在使用中介者模式的時候注意控制中介者角色的大小。

  討論了這么多關于中介者模式的特點。可以總結出中介者模式的使用時機:一組對象以定義良好但是復雜的方式進行通信,產生了混亂的依賴關系,也導致對象難以復用。

  四、總結

  中介者模式很容易在系統中應用,也很容易在系統中誤用。當系統出現了“多對多”交互復雜的對象群,不要急于使用中介者模式,而要先反思你的系統在設計上是不是合理。

上一條:下面沒有鏈接了
下一條:Java程序員的迷失―論“虛擬機”

相關文章

無相關信息
更新時間2022-09-16 09:56:15【至頂部↑】
聯系我們 | 郵件: | 客服熱線電話:4008816886(QQ同號) | 

付款方式留言簿投訴中心網站糾錯二維碼手機版

電話:
付款方式   |   給我留言   |   我要糾錯   |   聯系我們




主站蜘蛛池模板: 孕妇直播肚子疼揉肚子| 茶馆剧本完整版| 祝妈妈生日快乐英文| 《纯真年代》| 杨超越穿游泳服装| 药不能停| 惊天十二小时| 六级词汇电子版| 裸体广场舞| 搜狐视频官网| 风筝豆瓣| 髋关节置换术后护理ppt | 怎么做发射器| 暖春| 头像图片2024最新款女| 破天荒| 外国小哥街头索吻狂魔| 永远的乳房 电影| 抖音. com| 宁九郎| 申请采购的请示范文| 素珍| 雪山飞狐之塞北宝藏演员表| 浙江卫视回放观看入口| 阿芮尔·温特| 零食加盟店10大品牌| 韩国电影色即是空| 免费完整队列训练教案| 夜生活女王之霞姐| 贴身保镖完整电影| 战狼15电影在线观看| 涩涩免费网站| 弟子规武术健身操| 高达w| 汤唯和梁朝伟拍戏原版视频| 音乐会电视剧免费观看完整版| 飞龙猛将演员表| 密室逃脱电影| 戴夫·巴蒂斯塔| 山东教育电视台直播在线观看| 孙涛个人简历|