天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

MVC模式結(jié)合Mediator模式的運(yùn)用

  Mediator模式有一種本事,就是可以讓本身需要互相協(xié)作的對(duì)方,可以不用知道彼此,而把兩者之間的聯(lián)系,轉(zhuǎn)交給Mediator來(lái)處理。換句話(huà)說(shuō),Mediator模式解除了需要互相協(xié)調(diào)的對(duì)象之間的依賴(lài)。這也是Mediator(調(diào)停者)模式名字的由來(lái)。一個(gè)頗為形象的例子是***。

  進(jìn)入***的用戶(hù)總是要彼此通信的,這些對(duì)象如果直接進(jìn)行交互,就會(huì)彼此連接,最后織成一張紛繁復(fù)雜的大網(wǎng)。要分清彼此之間的關(guān)系,真可以說(shuō)是“剪不斷理還亂”了。所以,引入一個(gè)***對(duì)象來(lái)管理用戶(hù)間的交流,就勢(shì)成必然。

  Mediator模式與Facade模式都是管理復(fù)雜對(duì)象的行家里手,不過(guò)二者在運(yùn)用上還是有本質(zhì)的不同。Facade是門(mén)面,通過(guò)它隔斷了客戶(hù)端與復(fù)雜對(duì)象之間的直接關(guān)系。Mediator是仲裁者,哪里出現(xiàn)糾紛哪里就有它的身影。

  Facade對(duì)象對(duì)于客戶(hù)端來(lái)說(shuō)是可見(jiàn)的,而隱藏了復(fù)雜對(duì)象;Mediator對(duì)象對(duì)于客戶(hù)端來(lái)說(shuō)則是隱藏的,客戶(hù)端直接調(diào)用復(fù)雜對(duì)象,而復(fù)雜對(duì)象之間的關(guān)系,則轉(zhuǎn)交給了Mediator。

  MVC模式則是職責(zé)分離的典范,就好似三權(quán)分立一般,各司其職。Model負(fù)責(zé)提供數(shù)據(jù),View則負(fù)責(zé)顯示數(shù)據(jù),Controller則負(fù)責(zé)控制Model與View之間的交互,封裝了領(lǐng)域邏輯。這樣的職責(zé)分離形式,能夠有效地解除數(shù)據(jù)、業(yè)務(wù)邏輯與UI界面之間的耦合關(guān)系。但是,在MVC模式中,由于業(yè)務(wù)邏輯的問(wèn)題,很有可能在Controller之間還需要進(jìn)行交互。這種交互一旦增多,就可能出現(xiàn)在一個(gè)Controller中出現(xiàn)不同的Controller,導(dǎo)致代碼出現(xiàn)分散,形成霰彈式修改的壞味道。

  Marlon在其博客上發(fā)表了一篇文章,有效地將MVC模式與Mediator模式兩者結(jié)合,創(chuàng)造出一種稱(chēng)之為MVC+M的模式,有效地解決了Controller對(duì)象之間相互依賴(lài)的問(wèn)題。Marlon實(shí)現(xiàn)了一個(gè)文件瀏覽器來(lái)展示這一模式。運(yùn)行程序,當(dāng)我們點(diǎn)擊左邊的目錄樹(shù)時(shí),在右邊就會(huì)顯示當(dāng)前目錄下的所有文件。UI如圖所示:

左邊視圖對(duì)應(yīng)的控制對(duì)象為DirectorySelectorController,而右邊視圖對(duì)應(yīng)的則為FileSelectorController對(duì)象。Marlon統(tǒng)一定義了一個(gè)接口IColleague,作為Mediator模式中參與者的抽象接口,并讓相關(guān)的Controller實(shí)現(xiàn)它。類(lèi)圖如下所示:

每個(gè)Controller對(duì)象所接收的Mediator對(duì)象都是相同的,因?yàn)镸ediator對(duì)象作為BaseController基類(lèi)的屬性存在,并利用了Singleton模式,保證了Mediator對(duì)象只能存在一個(gè):

public abstract class BaseController : INotifyPropertyChanged, IColleague

{

    static Mediator mediatorInstance = new Mediator();


    public Mediator Mediator { get; private set; }

 

    public BaseController()

    {

        //set the mediator to be the same one for every controller.

        Mediator = mediatorInstance;

    }

     //rest of implementation

it知識(shí)庫(kù)MVC模式結(jié)合Mediator模式的運(yùn)用,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 精品国产乱码久久久久久免费流畅 | 116美女写真成人午夜视频 | 九色PORNY真实丨首页 | 乱爱性全过程免费视频 | 超碰在线97久久视频观看 | 久久棋牌评测 | a级全黄试频试看30分钟 | a毛片基地免费全部视频 | 同居了嫂子在线观看 | 久久久性色精品国产免费观看 | 天天综合网网欲色 | 寂寞夜晚视频在线观看 | 亚洲国产日韩制服在线观看 | 宅男午夜大片又黄又爽大片 | 99re久久免费热在线视频手机 | 国产精品第九页 | 亚洲国产在线精品国自产拍五月 | 欧美性狂猛AAAAAA | 国产精品成人网 | 久久青草免费91线频观看站街 | 久久精品中文字幕免费 | 久青草国产在线视频亚瑟影视 | 色人阁综合 | h版动漫在线播放的网站 | 亚洲精品久久久久一区二区三 | 久久久精品久久久久三级 | 久久只有这里有精品4 | 日本邪恶少女漫画大全 | 国产精品99亚发布 | 双性大乳浪受噗呲噗呲h总 双性被疯狂灌满精NP | 国产成人刺激视频在线观看 | 国产亚洲精品久久无亚洲 | 国产午夜电影院 | 美女叉腿掰阴大胆艺术照 | 影音先锋av丝袜天堂 | 亚洲高清中文字幕 | 啊叫大点声欠CAO的SAO贷 | 亚洲精品久久区二区三区蜜桃臀 | 最近免费中文字幕完整版HD | 亚洲午夜福利未满十八勿进 | 骚妇BB双飞插 |