




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
行為型模式-中介者模式行為型模式-中介者模式本章教學(xué)內(nèi)容中介者模式模式動機(jī)與定義模式結(jié)構(gòu)與分析模式實(shí)例與解析模式效果與應(yīng)用模式擴(kuò)展本章教學(xué)內(nèi)容中介者模式中介者模式模式動機(jī)中介者模式模式動機(jī)中介者模式模式動機(jī)在用戶與用戶直接聊天的設(shè)計方案中,用戶對象之間存在很強(qiáng)的關(guān)聯(lián)性,將導(dǎo)致系統(tǒng)出現(xiàn)如下問題:系統(tǒng)結(jié)構(gòu)復(fù)雜:對象之間存在大量的相互關(guān)聯(lián)和調(diào)用,若有一個對象發(fā)生變化,則需要跟蹤和該對象關(guān)聯(lián)的其他所有對象,并進(jìn)行適當(dāng)處理。對象可重用性差:由于一個對象和其他對象具有很強(qiáng)的關(guān)聯(lián),若沒有其他對象的支持,一個對象很難被另一個系統(tǒng)或模塊重用,這些對象表現(xiàn)出來更像一個不可分割的整體,職責(zé)較為混亂。系統(tǒng)擴(kuò)展性低:增加一個新的對象需要在原有相關(guān)對象上增加引用,增加新的引用關(guān)系也需要調(diào)整原有對象,系統(tǒng)耦合度很高,對象操作很不靈活,擴(kuò)展性差。中介者模式模式動機(jī)中介者模式模式動機(jī)在面向?qū)ο蟮能浖O(shè)計與開發(fā)過程中,根據(jù)“單一職責(zé)原則”,我們應(yīng)該盡量將對象細(xì)化,使其只負(fù)責(zé)或呈現(xiàn)單一的職責(zé)。對于一個模塊,可能由很多對象構(gòu)成,而且這些對象之間可能存在相互的引用,為了減少對象兩兩之間復(fù)雜的引用關(guān)系,使之成為一個松耦合的系統(tǒng),我們需要使用中介者模式,這就是中介者模式的模式動機(jī)。中介者模式模式動機(jī)中介者模式模式定義中介者模式(MediatorPattern)定義:用一個中介對象來封裝一系列的對象交互,中介者使各對象不需要顯式地相互引用,從而使其耦合松散,而且可以獨(dú)立地改變它們之間的交互。中介者模式又稱為調(diào)停者模式,它是一種對象行為型模式。中介者模式模式定義中介者模式模式定義MediatorPattern:Defineanobjectthatencapsulateshowasetofobjectsinteract.Mediatorpromotesloosecouplingbykeepingobjectsfromreferringtoeachotherexplicitly,anditletsyouvarytheirinteractionindependently.Frequencyofuse:mediumlow中介者模式模式定義中介者模式模式結(jié)構(gòu)中介者模式模式結(jié)構(gòu)中介者模式模式結(jié)構(gòu)中介者模式包含如下角色:Mediator:抽象中介者ConcreteMediator:具體中介者Colleague:抽象同事類ConcreteColleague:具體同事類中介者模式模式結(jié)構(gòu)中介者模式模式分析中介者模式可以使對象之間的關(guān)系數(shù)量急劇減少:中介者模式模式分析中介者模式模式分析中介者承擔(dān)兩方面的職責(zé):中轉(zhuǎn)作用(結(jié)構(gòu)性):通過中介者提供的中轉(zhuǎn)作用,各個同事對象就不再需要顯式引用其他同事,當(dāng)需要和其他同事進(jìn)行通信時,通過中介者即可。該中轉(zhuǎn)作用屬于中介者在結(jié)構(gòu)上的支持。協(xié)調(diào)作用(行為性):中介者可以更進(jìn)一步的對同事之間的關(guān)系進(jìn)行封裝,同事可以一致地和中介者進(jìn)行交互,而不需要指明中介者需要具體怎么做,中介者根據(jù)封裝在自身內(nèi)部的協(xié)調(diào)邏輯,對同事的請求進(jìn)行進(jìn)一步處理,將同事成員之間的關(guān)系行為進(jìn)行分離和封裝。該協(xié)調(diào)作用屬于中介者在行為上的支持。中介者模式模式分析中介者模式模式分析典型的抽象中介者類代碼:publicabstractclassMediator{ protectedArrayListcolleagues; publicvoidregister(Colleaguecolleague) {
colleagues.add(colleague); }
publicabstractvoidoperation();}中介者模式模式分析publicabstractclass中介者模式模式分析典型的具體中介者類代碼:publicclassConcreteMediatorextendsMediator{ publicvoidoperation() { ...... ((Colleague)(colleagues.get(0))).method1(); ...... }}中介者模式模式分析publicclassConcrete中介者模式模式分析典型的抽象同事類代碼:publicabstractclassColleague{ protectedMediatormediator;
publicColleague(Mediatormediator) {
this.mediator=mediator; }
publicabstractvoidmethod1();
publicabstractvoidmethod2();}中介者模式模式分析publicabstractclass中介者模式模式分析典型的具體同事類代碼:publicclassConcreteColleagueextendsColleague{ publicConcreteColleague(Mediatormediator) { super(mediator); }
publicvoidmethod1() { ...... }
publicvoidmethod2() { mediator.operation1(); }}中介者模式模式分析publicclassConcrete中介者模式中介者模式實(shí)例與解析實(shí)例:虛擬聊天室某論壇系統(tǒng)欲增加一個虛擬聊天室,允許論壇會員通過該聊天室進(jìn)行信息交流,普通會員(CommonMember)可以給其他會員發(fā)送文本信息,鉆石會員(DiamondMember)既可以給其他會員發(fā)送文本信息,還可以發(fā)送圖片信息。該聊天室可以對暴力字符進(jìn)行過濾,如“殺”等字符;還可以對發(fā)送的圖片大小進(jìn)行控制。用中介者模式設(shè)計該虛擬聊天室。中介者模式中介者模式實(shí)例與解析中介者模式中介者模式實(shí)例與解析實(shí)例:虛擬聊天室中介者模式中介者模式實(shí)例與解析中介者模式模式優(yōu)缺點(diǎn)中介者模式的優(yōu)點(diǎn)簡化了對象之間的交互。將各同事解耦。減少子類生成??梢院喕魍骂惖脑O(shè)計和實(shí)現(xiàn)。中介者模式模式優(yōu)缺點(diǎn)中介者模式模式優(yōu)缺點(diǎn)中介者模式的缺點(diǎn)在具體中介者類中包含了同事之間的交互細(xì)節(jié),可能會導(dǎo)致具體中介者類非常復(fù)雜,使得系統(tǒng)難以維護(hù)。中介者模式模式優(yōu)缺點(diǎn)中介者模式模式適用環(huán)境在以下情況下可以使用中介者模式:系統(tǒng)中對象之間存在復(fù)雜的引用關(guān)系,產(chǎn)生的相互依賴關(guān)系結(jié)構(gòu)混亂且難以理解。一個對象由于引用了其他很多對象并且直接和這些對象通信,導(dǎo)致難以復(fù)用該對象。想通過一個中間類來封裝多個類中的行為,而又不想生成太多的子類??梢酝ㄟ^引入中介者類來實(shí)現(xiàn),在中介者中定義對象交互的公共行為,如果需要改變行為則可以增加新的中介者類。中介者模式模式適用環(huán)境中介者模式模式應(yīng)用(1)中介者模式在事件驅(qū)動類軟件中應(yīng)用比較多,在設(shè)計GUI應(yīng)用程序時,組件之間可能存在較為復(fù)雜的交互關(guān)系,一個組件的改變將影響與之相關(guān)的其他組件,此時可以使用中介者模式來對組件進(jìn)行協(xié)調(diào)。(2)MVC是JavaEE的一個基本模式,此時控制器Controller作為一種中介者,它負(fù)責(zé)控制視圖對象View和模型對象Model之間的交互。如在Struts中,Action就可以作為JSP頁面與業(yè)務(wù)對象之間的中介者。中介者模式模式應(yīng)用中介者模式模式擴(kuò)展中介者模式與迪米特法則在中介者模式中,通過創(chuàng)造出一個中介者對象,將系統(tǒng)中有關(guān)的對象所引用的其他對象數(shù)目減少到最少,使得一個對象與其同事之間的相互作用被這個對象與中介者對象之間的相互作用所取代。因此,中介者模式就是迪米特法則的一個典型應(yīng)用。中介者模式模式擴(kuò)展中介者模式模式擴(kuò)展中介者模式與GUI開發(fā)中介者模式可以方便地應(yīng)用于圖形界面(GUI)開發(fā)中,在比較復(fù)雜的界面中可能存在多個界面組件之間的交互關(guān)系。對于這些復(fù)雜的交互關(guān)系,有時候我們可以引入一個中介者類,將這些交互的組件作為具體的同事類,將它們之間的引用和控制關(guān)系交由中介者負(fù)責(zé),在一定程度上簡化系統(tǒng)的交互,這也是中介者模式的常見應(yīng)用之一。
中介者模式模式擴(kuò)展本章小結(jié)中介者模式用一個中介對象來封裝一系列的對象交互,中介者使各對象不需要顯式地相互引用,從而使其耦合松散,而且可以獨(dú)立地改變它們之間的交互。中介者模式又稱為調(diào)停者模式,它是一種對象行為型模式。中介者模式包含四個角色:抽象中介者用于定義一個接口,該接口用于與各同事對象之間的通信;具體中介者是抽象中介者的子類,通過協(xié)調(diào)各個同事對象來實(shí)現(xiàn)協(xié)作行為,了解并維護(hù)它的各個同事對象的引用;抽象同事類定義各同事的公有方法;具體同事類是抽象同事類的子類,每一個同事對象都引用一個中介者對象;每一個同事對象在需要和其他同事對象通信時,先與中介者通信,通過中介者來間接完成與其他同事類的通信;在具體同事類中實(shí)現(xiàn)了在抽象同事類中定義的方法。本章小結(jié)中介者模式用一個中介對象來封裝一系列的對象交互,中介本章小結(jié)通過引入中介者對象,可以將系統(tǒng)的網(wǎng)狀結(jié)構(gòu)變成以中介者為中心的星形結(jié)構(gòu),中介者承擔(dān)了中轉(zhuǎn)作用和協(xié)調(diào)作用。中介者類是中介者模式的核心,它對整個系統(tǒng)進(jìn)行控制和協(xié)調(diào),簡化了對象之間的交互,還可以對對象間的交互進(jìn)行進(jìn)一步的控制。中介者模式的主要優(yōu)點(diǎn)在于簡化了對象之間的交互,將各同事解耦,還可以減少子類生成,對于復(fù)雜的對象之間的交互,通過引入中介者,可以簡化各同事類的設(shè)計和實(shí)現(xiàn);中介者模式主要缺
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國書架市場調(diào)查研究及行業(yè)投資潛力預(yù)測報告
- 學(xué)生宿舍目標(biāo)定位
- 鄭州市老年公寓(鄭州市養(yǎng)老服務(wù)中心)項目環(huán)境影響報告書
- 2025年中國血型試劑行業(yè)市場發(fā)展監(jiān)測及投資前景展望報告
- 環(huán)??萍际痉秷@項目投資分析
- 地塊平整項目驗(yàn)收與移交
- 解除bt合同范本
- 2025年體外診斷試劑產(chǎn)品項目合作計劃書
- 化級礬土行業(yè)市場發(fā)展及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 供熱管網(wǎng)及供熱設(shè)施提升改造項目實(shí)施方案
- 公司內(nèi)部職工集資方案及管理手冊41126
- 網(wǎng)運(yùn)分離參照德國繼續(xù)推薦京滬高鐵
- 《豐收之歌》精選教學(xué)課件
- 【青島版《科學(xué)》】四年級下冊第一單元1 《運(yùn)動與力》 教學(xué)設(shè)計
- 2022春蘇教版五年級下冊科學(xué)全冊單元課件全套
- 小學(xué)期末班級頒獎典禮動態(tài)PPT模板
- 液堿生產(chǎn)工序及生產(chǎn)流程敘述
- 圖解調(diào)音臺使用說明(共14頁)
- 人民軍隊性質(zhì)宗旨和優(yōu)良傳統(tǒng)教育課件教案
- 心理抗壓能力測試?yán)}
- 操作系統(tǒng)試題
評論
0/150
提交評論