




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、設(shè)計(jì)方式之戰(zhàn)略方式主講人 :成 玉 丹時(shí) 間:2021.11.14目 錄 Contents1234定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明5優(yōu)缺陷環(huán)境定義: 戰(zhàn)略方式定義了一系列的算法,并將每一個(gè)算法封裝起來(lái),而且使它們還可以相互交換。戰(zhàn)略方式讓算法獨(dú)立于運(yùn)用它的客戶而獨(dú)立變化。定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明優(yōu)缺陷和環(huán)境角色三種:戰(zhàn)略接口:用來(lái)約束一系列詳細(xì)的戰(zhàn)略算法。戰(zhàn)略實(shí)現(xiàn):就是詳細(xì)的算法實(shí)現(xiàn)。上下文:擔(dān)任和詳細(xì)的戰(zhàn)略類交互,通常上下文會(huì)持有一個(gè)真正的戰(zhàn)略實(shí)現(xiàn)。還可以讓詳細(xì)的戰(zhàn)略類來(lái)獲取上下文的數(shù)據(jù),甚至讓詳細(xì)的戰(zhàn)略類來(lái)獲取上下文的數(shù)據(jù)。角色之間的關(guān)系:上下文運(yùn)用戰(zhàn)略接口來(lái)調(diào)用詳細(xì)的戰(zhàn)略
2、實(shí)現(xiàn)定義的算法。定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明優(yōu)缺陷和環(huán)境目 錄 Contents1234定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明5優(yōu)缺陷和環(huán)境戰(zhàn)略實(shí)現(xiàn)算法實(shí)現(xiàn)定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明優(yōu)缺陷和環(huán)境目 錄 Contents1234定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明5優(yōu)缺陷和環(huán)境1、戰(zhàn)略接口:定義算法的接口:調(diào)用詳細(xì)的算法定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明優(yōu)缺陷和環(huán)境2、戰(zhàn)略實(shí)現(xiàn):在詳細(xì)的算法實(shí)現(xiàn)中,定義了三個(gè),分別是ConcreteStrategyA、ConcreteStrategyB、ConcreteStrategyC,例如非常簡(jiǎn)單,由于沒(méi)有詳細(xì)算法的實(shí)現(xiàn),三者也就是稱號(hào)不同
3、,例如代碼如下:定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明優(yōu)缺陷和環(huán)境3、上下文的實(shí)現(xiàn):例如代碼如下例如上文提到A,B,C三個(gè)對(duì)象定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明優(yōu)缺陷和環(huán)境目 錄 Contents1234定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明5優(yōu)缺陷和環(huán)境實(shí)例:報(bào)價(jià)管理問(wèn)題向客戶報(bào)價(jià),對(duì)于銷售部門的人來(lái)講,這是一個(gè)非常艱苦、非常復(fù)雜的問(wèn)題,對(duì)不同的客戶要報(bào)不同的價(jià)錢,例如有新客戶、老客戶、大客戶等。為了演示的簡(jiǎn)約性,假定如今需求實(shí)現(xiàn)一個(gè)簡(jiǎn)化的報(bào)價(jià)管理,實(shí)現(xiàn)如下的功能:1對(duì)普通客戶或者是新客戶報(bào)全價(jià)2對(duì)老客戶報(bào)的價(jià)錢,一致折扣5%3對(duì)大客戶報(bào)的價(jià)錢,一致折扣10%該怎樣實(shí)現(xiàn)呢?定義和角色構(gòu)造表示圖
4、例如代碼實(shí)例闡明優(yōu)缺陷和環(huán)境1、不用方式的處理方案:這種處理方案存在的問(wèn)題:價(jià)錢類包含了一切計(jì)算報(bào)價(jià)的算法,使得價(jià)錢類,尤其是報(bào)價(jià)這個(gè)方法比較龐雜,難以維護(hù)。定義了計(jì)算價(jià)錢的算法定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明優(yōu)缺陷和環(huán)境2、不用方式的修正方案:把這些算法從報(bào)價(jià)方法里面拿出去,構(gòu)成獨(dú)立的方法。據(jù)此寫出如下的實(shí)現(xiàn)代碼,例如代碼如下:把算法從報(bào)價(jià)方法里拿出去,構(gòu)成獨(dú)立的方法,這里調(diào)用了算法定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明優(yōu)缺陷和環(huán)境新客戶和普通客戶老客戶大客戶這樣做的優(yōu)點(diǎn)是:容易擴(kuò)展,較好的維護(hù)。缺陷是:假設(shè)有100種情況時(shí),怎樣做?定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明優(yōu)缺陷和環(huán)境3、戰(zhàn)略
5、方式下的處理方案:要運(yùn)用戰(zhàn)略方式來(lái)重寫前面報(bào)價(jià)的例如,大致有如下改動(dòng):首先需求定義出算法的接口。戰(zhàn)略接口然后把各種報(bào)價(jià)的計(jì)算方式單獨(dú)出來(lái),構(gòu)成算法類。戰(zhàn)略實(shí)現(xiàn)對(duì)于Price這個(gè)類,把它當(dāng)做上下文,在計(jì)算報(bào)價(jià)的時(shí)候,不再需要判別,直接運(yùn)用持有的詳細(xì)算法進(jìn)展運(yùn)算即可。選擇運(yùn)用哪一個(gè)算法的功能挪出去,放到外部運(yùn)用的客戶端去。上下文實(shí)例的結(jié)構(gòu)圖定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明優(yōu)缺陷和環(huán)境先看戰(zhàn)略接口,例如代碼如下:定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明優(yōu)缺陷和環(huán)境 接下來(lái)看看詳細(xì)的算法實(shí)現(xiàn),不同的算法,實(shí)現(xiàn)也不一樣,先看為新客戶或者是普通客戶計(jì)算應(yīng)報(bào)的價(jià)錢的實(shí)現(xiàn),例如代碼如下:定義和角色構(gòu)造表示圖例
6、如代碼實(shí)例闡明優(yōu)缺陷和環(huán)境老客戶計(jì)算應(yīng)報(bào)的價(jià)錢的實(shí)現(xiàn),例如代碼如下:定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明優(yōu)缺陷和環(huán)境大客戶計(jì)算應(yīng)報(bào)的價(jià)錢的實(shí)現(xiàn),例如代碼如下:定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明優(yōu)缺陷和環(huán)境接下來(lái)看看上下文的實(shí)現(xiàn),也就是原來(lái)的價(jià)錢類,它的變化比較大,主要有:原來(lái)那些私有的,用來(lái)做不同計(jì)算的方法,曾經(jīng)去掉了,獨(dú)立出去做成了算法類原來(lái)報(bào)價(jià)方法里面,對(duì)詳細(xì)計(jì)算方式的判別,去掉了,讓客戶端來(lái)完成選擇詳細(xì)算法的功能新添加持有一個(gè)詳細(xì)的算法實(shí)現(xiàn),經(jīng)過(guò)構(gòu)造方法傳入原來(lái)報(bào)價(jià)方法的實(shí)現(xiàn),變化成了轉(zhuǎn)調(diào)詳細(xì)算法來(lái)實(shí)現(xiàn)定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明優(yōu)缺陷和環(huán)境定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明
7、優(yōu)缺陷和環(huán)境寫個(gè)客戶端來(lái)測(cè)試運(yùn)轉(zhuǎn)一下,例如代碼如下:定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明優(yōu)缺陷和環(huán)境目 錄 Contents1234定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明5優(yōu)缺陷和環(huán)境優(yōu)點(diǎn):1、 戰(zhàn)略方式提供了管理相關(guān)的算法族的方法。恰當(dāng)運(yùn)用承繼可以把公共的代碼轉(zhuǎn)移到父類里面,從而防止反復(fù)的代碼。2、 戰(zhàn)略方式提供了可以交換承繼關(guān)系的方法。承繼可以處置多種算法或行為。3、 運(yùn)用戰(zhàn)略方式可以防止運(yùn)用多重條件轉(zhuǎn)移語(yǔ)句。假設(shè)采用多重轉(zhuǎn)移語(yǔ)句將不易維護(hù).定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明優(yōu)缺陷和環(huán)境缺陷:1、客戶端必需知道一切的戰(zhàn)略類,并自行決議運(yùn)用哪一個(gè)戰(zhàn)略類。換言之,戰(zhàn)略方式只適用于客戶端知道一切
8、的算法或行為的情況。2、 戰(zhàn)略方式呵斥很多的戰(zhàn)略類,每個(gè)詳細(xì)戰(zhàn)略類都會(huì)產(chǎn)生一個(gè)新類,使得戰(zhàn)略類變得很復(fù)雜。定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明優(yōu)缺陷和環(huán)境運(yùn)用環(huán)境: 1、實(shí)現(xiàn)某特定功能在不同的情況下采用不同的戰(zhàn)略即算法,程序在運(yùn)轉(zhuǎn)時(shí)動(dòng)態(tài)選擇所要采用的戰(zhàn)略。 2、對(duì)客戶端完全隱藏算法的詳細(xì)實(shí)現(xiàn)細(xì)節(jié)。 3、不同種算法之間可以彼此交換且完全獨(dú)立。定義和角色構(gòu)造表示圖例如代碼實(shí)例闡明優(yōu)缺陷和環(huán)境設(shè)計(jì)方式之模板方法方式主講人 :孫 晗時(shí) 間:2021.11.14目 錄 Contents1234定義和角色構(gòu)造表示圖優(yōu)缺陷和環(huán)境實(shí)例闡明5區(qū)別與聯(lián)絡(luò)定義:一個(gè)籠統(tǒng)類中,有一個(gè)主方法,再定義1n個(gè)方法,這些方法
9、可以是籠統(tǒng)的,也可以是詳細(xì)的;定義一個(gè)類,承繼該籠統(tǒng)類,重寫籠統(tǒng)方法,經(jīng)過(guò)調(diào)用籠統(tǒng)類,實(shí)現(xiàn)對(duì)子類的調(diào)用。意圖:模板方法方式是在一個(gè)方法中定義一個(gè)算法的骨架,而將一些步驟延遲到子類中實(shí)現(xiàn)。模板方法使得子類可以在不改動(dòng)算法構(gòu)造的情況下,重新定義算法中的某些步驟。定義和角色構(gòu)造表示圖實(shí)例闡明區(qū)別與聯(lián)絡(luò)優(yōu)缺陷和環(huán)境角色兩種:籠統(tǒng)模板類:定義了一個(gè)或多個(gè)籠統(tǒng)操作,以便讓子類實(shí)現(xiàn)。這些籠統(tǒng)操作叫做根本操作,它們是一個(gè)頂級(jí)邏輯的組成步驟定義并實(shí)現(xiàn)了一個(gè)模板方法詳細(xì)模板類:現(xiàn)父類所定義的一個(gè)或多個(gè)籠統(tǒng)方法每一個(gè)籠統(tǒng)模板類都可以有恣意多個(gè)詳細(xì)模板類與之對(duì)應(yīng),而每一個(gè)詳細(xì)模板類都可以給出這些籠統(tǒng)方法的不同實(shí)現(xiàn),從
10、而使得頂級(jí)邏輯的實(shí)現(xiàn)各不一樣定義和角色構(gòu)造表示圖實(shí)例闡明區(qū)別與聯(lián)絡(luò)優(yōu)缺陷和環(huán)境方法兩種:模板方法:一個(gè)模板方法是定義在籠統(tǒng)類中的,把根本操作方法組合在一同構(gòu)成一個(gè)總算法或一個(gè)總行為的方法。一個(gè)籠統(tǒng)類可以有恣意多個(gè)模板方法,而不限于一個(gè)。每一個(gè)模板方法都可以調(diào)用恣意多個(gè)詳細(xì)方法。根本方法:籠統(tǒng)方法:由籠統(tǒng)類聲明,由詳細(xì)子類實(shí)現(xiàn),java言語(yǔ)中以abstract關(guān)鍵字標(biāo)出來(lái)。詳細(xì)方法:由籠統(tǒng)類聲明并實(shí)現(xiàn),而子類并不實(shí)現(xiàn)或置換,java中沒(méi)有abstract關(guān)鍵字。鉤子方法:有籠統(tǒng)類聲明并實(shí)現(xiàn),而子類會(huì)加以擴(kuò)展。通?;\統(tǒng)類給出的實(shí)現(xiàn)是一個(gè)空實(shí)現(xiàn),作為方法的默許實(shí)現(xiàn)。因此,此方法的存在,可以讓子類有才
11、干對(duì)算法的不同點(diǎn)進(jìn)展掛鉤,要不要掛鉤,由子類自行決議。定義和角色構(gòu)造表示圖實(shí)例闡明區(qū)別與聯(lián)絡(luò)優(yōu)缺陷和環(huán)境目 錄 Contents1234定義和角色構(gòu)造表示圖優(yōu)缺陷和環(huán)境實(shí)例闡明5區(qū)別與聯(lián)絡(luò)定義和角色構(gòu)造表示圖實(shí)例闡明區(qū)別與聯(lián)絡(luò)優(yōu)缺陷和環(huán)境目 錄 Contents1234定義和角色構(gòu)造表示圖優(yōu)缺陷和環(huán)境實(shí)例闡明5區(qū)別與聯(lián)絡(luò)創(chuàng)建一個(gè)模板(籠統(tǒng))類:Beverage(飲料)模板方法給出了邏輯的骨架,而邏輯的組成是一些相應(yīng)的籠統(tǒng)操作,他們推遲到子類中去實(shí)現(xiàn)定義和角色構(gòu)造表示圖實(shí)例闡明區(qū)別與聯(lián)絡(luò)優(yōu)缺陷和環(huán)境這就實(shí)現(xiàn)了模板方法中最重要的類的承繼和方法的復(fù)用創(chuàng)建一個(gè)咖啡類(Coffee)和茶(Tea)類,都
12、承繼Beverage籠統(tǒng)類,而各個(gè)方法的詳細(xì)實(shí)現(xiàn)方式都不同定義和角色構(gòu)造表示圖實(shí)例闡明區(qū)別與聯(lián)絡(luò)優(yōu)缺陷和環(huán)境運(yùn)轉(zhuǎn)結(jié)果測(cè)試類定義和角色構(gòu)造表示圖實(shí)例闡明區(qū)別與聯(lián)絡(luò)優(yōu)缺陷和環(huán)境目 錄 Contents1234定義和角色構(gòu)造表示圖優(yōu)缺陷和環(huán)境實(shí)例闡明5區(qū)別與聯(lián)絡(luò)優(yōu)點(diǎn)1模板方法方式經(jīng)過(guò)把不變的行為搬移到超類,去除了子類中的反復(fù)代碼。子類實(shí)現(xiàn)算法的某些細(xì)節(jié),有助于算法的擴(kuò)展和代碼復(fù)用。2經(jīng)過(guò)一個(gè)父類調(diào)用子類實(shí)現(xiàn)的操作,經(jīng)過(guò)子類擴(kuò)展添加新的行為,符合“開(kāi)放-封鎖原那么。3運(yùn)用模板方法是系統(tǒng)擴(kuò)展性得到加強(qiáng),最小化了變化對(duì)系統(tǒng)的影響。定義和角色構(gòu)造表示圖實(shí)例闡明區(qū)別與聯(lián)絡(luò)優(yōu)缺陷和環(huán)境缺陷1每個(gè)不同的實(shí)現(xiàn)都需求定義一個(gè)子類,這會(huì)導(dǎo)致類的個(gè)數(shù)的添加,也會(huì)添加很多詳細(xì)方法的數(shù)量,使設(shè)計(jì)更加籠統(tǒng)。2假設(shè)選用的實(shí)現(xiàn)方式不當(dāng),復(fù)用情況會(huì)很差。定義和角色構(gòu)造表示圖實(shí)例闡明區(qū)別與聯(lián)絡(luò)優(yōu)缺陷和環(huán)境運(yùn)用范圍:子類具有一致的操作步驟或操作過(guò)程;子類具有不同的操作細(xì)節(jié);存在多個(gè)具有同樣操作步驟的運(yùn)用場(chǎng)景,但某些詳細(xì)的操作細(xì)節(jié)卻各不一樣。定義和角色構(gòu)造表示圖實(shí)例闡明區(qū)別與聯(lián)絡(luò)優(yōu)缺陷和環(huán)境目 錄 Contents1234定義和角色構(gòu)造表示圖優(yōu)缺陷和環(huán)境實(shí)例闡
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)家長(zhǎng)會(huì)校長(zhǎng)發(fā)言
- 2024廣告設(shè)計(jì)師能力要求分析試題及答案
- 2024年紡織工程師生產(chǎn)線優(yōu)化試題及答案
- 國(guó)際商業(yè)美術(shù)設(shè)計(jì)師考試實(shí)際案例研究試題及答案
- 水泥實(shí)驗(yàn)考試題及答案
- 河南物理期中試題及答案
- hr證書(shū)考試題庫(kù)及答案
- 下料工考試試題及答案
- 光伏站區(qū)動(dòng)力電纜技術(shù)規(guī)范書(shū)
- 文字類考試題及答案
- 2024年煙臺(tái)龍口市衛(wèi)生健康局所屬事業(yè)單位招聘工作人員筆試真題
- 2025年FRM金融風(fēng)險(xiǎn)管理師考試專業(yè)試卷(金融風(fēng)險(xiǎn)管理案例分析)
- GB/T 2087-2001圓柱螺旋拉伸彈簧尺寸及參數(shù)(半圓鉤環(huán)型)
- GA/T 1567-2019城市道路交通隔離欄設(shè)置指南
- 與幼兒園相關(guān)的法律知識(shí)及案例(課堂PPT)
- 數(shù)字貨幣MASK發(fā)行機(jī)制收益制度解讀課件
- 液壓泵蓋夾具設(shè)計(jì)說(shuō)明書(shū)(含毛坯圖)
- 20章-過(guò)渡金屬(Ⅰ)-鈦釩鉻錳講解課件
- 外墻保溫脫落維修方案范文通用5篇
- 第3章品牌識(shí)別及品牌符號(hào)
- 城鎮(zhèn)供熱管網(wǎng)工程施工組織設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論