版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第九章責(zé)任鏈模式1責(zé)任鏈模式使多個(gè)對(duì)象都有時(shí)機(jī)處理請(qǐng)求,從而防止請(qǐng)求的發(fā)送者和接收者之間的耦合關(guān)系。將這些對(duì)象連成一條鏈,并沿著這條鏈傳遞該請(qǐng)求,直到有一個(gè)對(duì)象處理它為止。ChainofResponsibilityPatternAvoidcouplingthesenderofarequesttoitsreceiverbygivingmorethanoneobjectachancetohandletherequest.Chainthereceivingobjectsandpasstherequestalongthechainuntilanobjecthandlesit.1精選ppt2精選pptChainofResponsibility模式在軍隊(duì)中也有應(yīng)用的例子。某個(gè)下級(jí)軍官要求得到上級(jí)軍官的許可,這個(gè)請(qǐng)求將由其直接上級(jí)軍官再報(bào)給上級(jí)軍官的上級(jí)軍官,直到某個(gè)上級(jí)軍官有權(quán)利做決定為止。如果一名水兵請(qǐng)求進(jìn)入某個(gè)海軍基地,他說執(zhí)行的請(qǐng)求過程就是ChainofResponsibility的實(shí)例。3精選ppt一、概述4
責(zé)任鏈模式是使用多個(gè)對(duì)象處理用戶請(qǐng)求的成熟模式,責(zé)任鏈模式的關(guān)鍵是將用戶的請(qǐng)求分派給許多對(duì)象,這些對(duì)象被組織成一個(gè)責(zé)任鏈,即每個(gè)對(duì)象含有后繼對(duì)象的引用,并要求責(zé)任鏈上的每個(gè)對(duì)象,如果能處理用戶的請(qǐng)求,就做出處理,不再將用戶的請(qǐng)求傳遞給責(zé)任鏈上的下一個(gè)對(duì)象;如果不能處理用戶的請(qǐng)求,就必須將用戶的請(qǐng)求傳遞給責(zé)任鏈上的下一個(gè)對(duì)象。4精選ppt二、責(zé)任鏈模式的結(jié)構(gòu)與使用
5模式的結(jié)構(gòu)中包括兩種角色:處理者〔Handler〕具體處理者〔ConcreteHandler〕5精選ppt6模式的UML類圖
6精選pptaClientaHandleraConcreteHandlersuccessoraConcreteHandlersuccessor7精選ppt模式的結(jié)構(gòu)的描述與使用用戶提交一個(gè)人的身份證號(hào)碼,想知道該人是否在北京、上海或天津居住。8精選ppt91.處理者〔Handler〕:Handler.javapublicinterfaceHandler{publicabstractvoidhandleRequest(Stringnumber);publicabstractvoidsetNextHandler(Handlerhandler);}9精選ppt102.具體處理者〔ConcreteHandler〕_1:Beijing.javapublicclassBeijingimplementsHandler{privateHandlerhandler;privateArrayList<String>numberList;Beijing(){numberList=newArrayList<String>();numberList.add("11129812340930034");numberList.add("10120810340930632");numberList.add("22029812340930034");numberList.add("32620810340930632");}publicvoidhandleRequest(Stringnumber){if(numberList.contains(number))System.out.println("該人在北京居住");else{System.out.println("該人不在北京居住");if(handler!=null)handler.handleRequest(number);}}publicvoidsetNextHandler(Handlerhandler){this.handler=handler;}}10精選ppt112.具體處理者〔ConcreteHandler〕_2:Shanghai.javapublicclassShanghaiimplementsHandler{privateHandlerhandler;privateArrayList<String>numberList;Shanghai(){numberList=newArrayList<String>();numberList.add("34529812340930034");numberList.add("98720810340430632");numberList.add("36529812340930034");numberList.add("77720810340930632");}publicvoidhandleRequest(Stringnumber){if(numberList.contains(number))System.out.println("該人在上海居住");else{System.out.println("該人不在上海居住");if(handler!=null)handler.handleRequest(number);}}publicvoidsetNextHandler(Handlerhandler){this.handler=handler;}}11精選ppt122.具體處理者〔ConcreteHandler〕_3:Tianjin.javapublicclassTianjinimplementsHandler{privateHandlerhandler;privateArrayList<String>numberList;Tianjin(){numberList=newArrayList<String>();numberList.add("10029812340930034");numberList.add("20020810340430632");numberList.add("30029812340930034");numberList.add("50020810340930632");}publicvoidhandleRequest(Stringnumber){if(numberList.contains(number))System.out.println("該人在天津居住");else{System.out.println("該人不在天津居住");if(handler!=null)handler.handleRequest(number);}}publicvoidsetNextHandler(Handlerhandler){this.handler=handler;}}12精選ppt133.應(yīng)用Application.javapublicclassApplication{privateHandlerbeijing,shanghai,tianjin;publicvoidcreateChain(){beijing=newBeijing();shanghai=newShanghai();tianjin=newTianjin();beijing.setNextHandler(shanghai);shanghai.setNextHandler(tianjin);}publicvoidreponseClient(Stringnumber){beijing.handleRequest(number);}publicstaticvoidmain(Stringargs[]){Applicationapplication=newApplication();application.createChain();application.reponseClient("77720810340930632");;}}13精選ppt三、責(zé)任鏈模式的優(yōu)點(diǎn)14責(zé)任鏈中的對(duì)象只和自己的后繼是低耦合關(guān)系,和其他對(duì)象毫無關(guān)聯(lián),這使得編寫處理者對(duì)象以及創(chuàng)立責(zé)任鏈變得非常容易。當(dāng)在處理者中分配職責(zé)時(shí),責(zé)任鏈給應(yīng)用程序更多的靈活性。應(yīng)用程序可以動(dòng)態(tài)地增加、刪除處理者或重新指派處理者的職責(zé)。應(yīng)用程序可以動(dòng)態(tài)地改變處理者之間的先后順序。使用責(zé)任鏈的用戶不必知道處理者的信息,用戶不會(huì)知道到底是哪個(gè)對(duì)象處理了它的請(qǐng)求。14精選ppt四、應(yīng)用舉例//Handler.javapublicinterfaceHandler{publicabstractvoidcompuerMultiply(Stringnumber);publicabstractvoidsetNextHandler(Handlerhandler);}15精選pptpublicclassUseIntimplementsHandler{privateHandlerhandler;privateintresult=1;publicvoidcompuerMultiply(Stringnumber){try{intn=Integer.parseInt(number);inti=1;while(i<=n){result=result*i;if(result<=0){System.out.println(“超出我的能力范圍,我計(jì)算不了");handlerpuerMultiply(number);return;}i++;}System.out.println(number+“的階乘:"+result);}catch(NumberFormatExceptionexp){System.out.println(exp.toString());}}publicvoidsetNextHandler(Handlerhandler){this.handler=handler;}}16精選pptpublicclassUseLongimplementsHandler{privateHandlerhandler;privatelongresult=1;publicvoidcompuerMultiply(Stringnumber){try{longn=Long.parseLong(number);longi=1;while(i<=n){result=result*i;if(result<=0){System.out.println(“超出我的能力范圍,我計(jì)算不了");handlerpuerMultiply(number);return;}i++;}System.out.println(number+“的階乘:"+result);}catch(NumberFormatExceptionexp){System.out.println(exp.toString());}}publicvoidsetNextHandler(Handlerhandler){this.handler=handler;}}17精選pptimportjava.math.BigInteger;publicclassUseBigIntegerimplementsHandler{privateHandlerhandler;privateBigIntegerresult=newBigInteger("1");publicvoidcompuerMultiply(Stringnumber){try{BigIntegern=newBigInteger(number);BigIntegerONE=newBigInteger("1");BigIntegeri=ONE;while(ipareTo(n)<=0){result=result.multiply(i);i=i.add(ONE);}System.out.println(number+"??????:"+result);}catch(NumberFormatEx
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026玉溪師范學(xué)院附屬實(shí)驗(yàn)學(xué)校、玉溪師范學(xué)院附屬小學(xué)區(qū)外人才引進(jìn)(28人)備考題庫附答案
- 2026福建廈門市集美區(qū)雙嶺小學(xué)產(chǎn)假頂崗教師招聘1人備考題庫附答案
- 2026福建省網(wǎng)絡(luò)與信息安全測(cè)評(píng)中心招聘駕駛員2人備考題庫附答案
- 2026福建福州市中醫(yī)院招聘1名編外眼科護(hù)理考試備考題庫附答案
- 2026西安市某電力系統(tǒng)外包項(xiàng)目充電設(shè)施運(yùn)維人員招聘?jìng)淇碱}庫附答案
- 2026貴州湄潭縣紀(jì)委縣監(jiān)委選調(diào)事業(yè)單位工作人員備考題庫附答案
- 2026重慶兩江新區(qū)鴛鴦社區(qū)衛(wèi)生服務(wù)中心招聘1人參考題庫附答案
- 2026陜西寶雞市科技創(chuàng)新交流服務(wù)中心招聘高層次人才3人備考題庫附答案
- 2026陜西集團(tuán)龍鋼公司供銷中心一般管理崗位競(jìng)聘24人參考題庫附答案
- 中共南充市委社會(huì)工作部關(guān)于公開招聘南充市新興領(lǐng)域黨建工作專員的(6人)參考題庫附答案
- 黑龍江省大慶中學(xué)2025-2026學(xué)年高一(上)期末物理試卷(含答案)
- 2025年csco肝癌治療指南
- 高中生寒假安全教育主題班會(huì)
- 2025年銀行縣支行支部書記抓黨建述職報(bào)告
- 2026云南公務(wù)員考試(6146人)易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 畜牧技術(shù)員安全培訓(xùn)效果測(cè)試考核試卷含答案
- 智慧教育生態(tài)的協(xié)同發(fā)展機(jī)制及其實(shí)踐案例研究
- 人大企業(yè)經(jīng)濟(jì)學(xué)考研真題-802經(jīng)濟(jì)學(xué)綜合歷年真題重點(diǎn)
- 建筑抗震鑒定標(biāo)準(zhǔn)課件
- 人教版二年級(jí)數(shù)學(xué)下冊(cè)《【全冊(cè)】完整版》優(yōu)質(zhì)課件
- 水庫工程施工測(cè)量方案
評(píng)論
0/150
提交評(píng)論