軟件設(shè)計(jì)模式之行為模式.ppt_第1頁
軟件設(shè)計(jì)模式之行為模式.ppt_第2頁
軟件設(shè)計(jì)模式之行為模式.ppt_第3頁
軟件設(shè)計(jì)模式之行為模式.ppt_第4頁
軟件設(shè)計(jì)模式之行為模式.ppt_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第四章,行為模式、課程目標(biāo)、觀察程序模式Iterator模式Strategy模式Template模式Visitor模式Chain of Responsibility模式Command模式其他模式(例如Interpreter模式、)牙齒方案主要由以下部分組成:節(jié)目運(yùn)行完成后,通過拖動(dòng)鼠標(biāo)在表單中繪制“Hello”字符,(1)使用命令介面Command定義命令方法。(2)特定命令角色MacroCommand和DrawCommand類,這兩個(gè)類都定義了方法,如Command介面實(shí)現(xiàn)、DrawCommand實(shí)現(xiàn)繪制命令,以及MacroCommand類為命令添加、運(yùn)行和刪除。(3)請(qǐng)求介面Drawabl

2、e,DrawCanvas類實(shí)現(xiàn)Drawable接口并定義特定請(qǐng)求相關(guān)操作。(4)實(shí)施客戶端、JFrame繼承和ActionListener和MouseMotionListener介面,創(chuàng)建西餐介面和各種事件,行為模式概述,行為模式描述算法和對(duì)象之間的角色分配,行為模式描述對(duì)象和類的模式,行為類模式和行為對(duì)象模式,(1)行為類模式使用繼承機(jī)制在類之間分配行為。(2)行為對(duì)象模式使用對(duì)象合成而不是繼承。某些行為對(duì)象模式說明了相應(yīng)的一組對(duì)象如何徐璐協(xié)作,以執(zhí)行這些對(duì)象中任何一個(gè)都不能單獨(dú)執(zhí)行的任務(wù)。這里的一個(gè)重要問題是對(duì)等對(duì)象如何相互理解。對(duì)等物件可以保持彼此的明確參考,但會(huì)增加管接頭。在極端情況下

3、,每個(gè)對(duì)象必須了解所有其他對(duì)象。職責(zé)模式,職責(zé)模式是職責(zé)鏈模式,當(dāng)有多個(gè)對(duì)象可以處理或滿足客戶請(qǐng)求時(shí),配置鏈職責(zé)(CoR)將按順序?yàn)槊總€(gè)對(duì)象處理請(qǐng)求的機(jī)會(huì)好的示例是Java的異常處理機(jī)制,當(dāng)程序遇到異常時(shí),該機(jī)制會(huì)比較異常是否與catch捕獲的異常匹配,如果匹配,則執(zhí)行設(shè)置的處理,如果不比較相應(yīng)的處理,則將異常導(dǎo)出到try catch節(jié)目塊之外。方案簡(jiǎn)介,主要適用于以下情況:多個(gè)對(duì)象可以處理一個(gè)請(qǐng)求,但處理請(qǐng)求的對(duì)象在運(yùn)行時(shí)自動(dòng)確定。嘗試向多個(gè)對(duì)象之一提交請(qǐng)求,而不明確指定收件人。試圖動(dòng)態(tài)指定處理請(qǐng)求的對(duì)象集合。Chain of Responsibility模式映射和角色鏈模式映射如下所示:H

4、andler:定義處理請(qǐng)求的接口。ConcreteHandler:處理您負(fù)責(zé)的請(qǐng)求,并訪問鏈的繼承人。如果可以處理請(qǐng)求,則處理。否則,將請(qǐng)求轉(zhuǎn)發(fā)給繼任者。Client:將請(qǐng)求提交給鏈中的特定處理者ConcreteHandler對(duì)象。,Chain of Responsibility模式示例,public interface handler public void handle request(char c);public class character handler implements handler private handler successor;public character ha

5、ndler(handler successor)this . successor=successor;public void handle request(char c)if(character . is letter(c)system . out . print ln(character handln)Else SuSEpublic class number handler implements handler private handler successor;public number handler(handler successor)this . successor=successo

6、r;public void handle request(charc)if(character . is digit(c)system . out . print ln(number handler類處理Elsepublic class symbol handler implements handler public void handle request(char c)if(character . is defined(c)sysses es、字符處理、數(shù)字處理、符號(hào)處理、角色鏈模式優(yōu)點(diǎn)和不足、角色鏈模式主要有以下幾個(gè)茄子優(yōu)點(diǎn):效率低下、在牙齒模式下,必須具有集成的Handler界面。提高將

7、責(zé)任分配給對(duì)象的靈活性,Command模式,Command模式,即將命令模式、請(qǐng)求或任務(wù)封裝到一個(gè)對(duì)象中,將執(zhí)行命令的責(zé)任與執(zhí)行命令的責(zé)任分開,然后將這些責(zé)任委派給其他對(duì)象。允許請(qǐng)求的一方獨(dú)立于發(fā)送方。模式介紹主要適用于以下情況:可以通過抽象要執(zhí)行的操作來參數(shù)對(duì)象。在處理語言中,可使用“回調(diào)”(callback)函數(shù)表示這些參數(shù)機(jī)制。在其他時(shí)間指定、排序和提交請(qǐng)求。Command對(duì)象可以具有獨(dú)立于初始請(qǐng)求的生命周期。支持取消操作。支持修改日志。將系統(tǒng)配置為組件的原語操作的高級(jí)操作。Command模式映射,命令模式映射是:Command:聲明執(zhí)行操作的接口。ConcreteCommand:將接收

8、方對(duì)象綁定到動(dòng)作,并調(diào)用接收方的相應(yīng)操作以實(shí)現(xiàn)execute()方法。Receiver:如果知道如何實(shí)現(xiàn)請(qǐng)求相關(guān)任務(wù),則任何類都可以是接收方。Invoker:在命令可以執(zhí)行的情況下,必須運(yùn)行牙齒請(qǐng)求并保存ConcreteCommand對(duì)象。Client:創(chuàng)建特定命令對(duì)象并設(shè)置收件人。Command模式示例,Command模式廣泛用于介面設(shè)計(jì)。例如,在表單中添加四個(gè)按鈕和一個(gè)文本框。其中三個(gè)牙齒更改文本框顏色,第四個(gè)按鈕關(guān)閉表格。具體實(shí)施包括:interface command interface public void process event();import javax . swing

9、. jbutton;class blue extends jbutton implements command interface public void process event()client . tf1 . set background(color .public blue(string name)super(name);class button handler implements action listener public void action performed(action event e)command interface command obj=(command int

10、erface command obj=,自定義四個(gè)按鈕類,每個(gè)按鈕類繼承JButton并實(shí)現(xiàn)CommandInterface接口。Blue類執(zhí)行文本框顏色為 BLUE 、cyan類執(zhí)行文本框顏色為 Cyan 、red類執(zhí)行文本框顏色為 Red 的任務(wù)以及ExitButton類關(guān)閉表單的任務(wù)。因?yàn)樗鼈兌己芟嗨?,所以只提供Blue類的參考代碼。Command模式的優(yōu)點(diǎn)和缺點(diǎn):使用Command模式可能會(huì)導(dǎo)致系統(tǒng)中有太多特定的Command類。某些系統(tǒng)可能需要數(shù)十、數(shù)百或數(shù)千個(gè)特定的Command類,這可能會(huì)使這些系統(tǒng)上的Command模式不現(xiàn)實(shí)。Command模式將“執(zhí)行工作請(qǐng)求”對(duì)象和“知道如何

11、執(zhí)行工作的對(duì)象”分開??梢詫⒍鄠€(gè)命令組合到一個(gè)復(fù)合命令中。,因?yàn)椴恍枰薷默F(xiàn)有類,所以添加新command很容易。Command模式的優(yōu)點(diǎn)是可以像使用和繼承任何其他對(duì)象一樣使用和繼承Command對(duì)象。Iterator模式和Iterator模式是遍歷集合類的標(biāo)準(zhǔn)訪問方法的迭代器模式。從各種類型的集合類中抽象訪問邏輯,以避免客戶端暴露程序集的內(nèi)部結(jié)構(gòu)。模式簡(jiǎn)介主要適用于以下情況:,提供了允許遍歷各種聚合結(jié)構(gòu)的集成介面(即支持多態(tài)迭代)。Iterator模式映射,迭代器模式映射定義了:Iterator:元素訪問和遍歷接口。ConcreteIterator:實(shí)現(xiàn)Iterator接口的特定迭代器,該接口在遍歷聚合對(duì)象時(shí)跟蹤當(dāng)前位置。Aggregate:定義用于生成相應(yīng)迭代器的接口。ConcreteAggregate:實(shí)現(xiàn)Aggregate接口的聚合對(duì)象,它實(shí)現(xiàn)了返回ConcreteIterator實(shí)例的方法。Iterator模式示例,public interface my Iterator public boolean has next();public Object next();import Ja

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論