freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

設(shè)計(jì)模式補(bǔ)充ppt課件(已修改)

2025-01-29 10:09 本頁面
 

【正文】 1 內(nèi)容安排 ?設(shè)計(jì)模式舉例 ? 策略模式 ? 適配器模式 ? 工廠模式 ? 單件模式 ? 模板方法模式 2 從模擬鴨子游戲開始 ?Joe成功開發(fā)了模擬鴨子游戲 SimUDuck ? 采用 OO技術(shù) ? Duck中 display抽象方法 D u c k+ q u a c k ( )+ s w im ( )+ d is p la y ( )M al l ar d D u c k+ d is p la y ( )R e d h e ad D u c k+ d is p la y ( )O t h e r D u c k綠頭鴨子 紅頭鴨子 3 需求變了 ?新需求 ? 希望模擬的鴨子會(huì)飛 ? 初步的解決方案:在 Duck中增加 fly()方法, 所有鴨子就會(huì)飛了 D u c k+ q u a c k ( )+ s w im ( )+ f ly ( )+ d is p la y ( )M al l ar d D u c k+ d is p la y ( )R e d h e ad D u c k+ d is p la y ( )O t h e r D u c k4 橡皮鴨飛起來了! ?問題來了 ? 基類中的 fly()方法導(dǎo)致所有子類均繼承給方法,但并不是所有的子類都需要 fly()方法; ? 為了復(fù)用( reuse)而使用繼承,往往存在問題! D u c k+ q u a c k ( )+ s w im ( )+ f ly ( )+ d is p la y ( )M al l ar d D u c k+ d is p la y ( )R e d h e ad D u c k+ d is p la y ( )R u b b e r D u c k+ q u a c k ( )+ d is p la y ( )覆蓋了橡皮鴨的叫聲 5 覆蓋橡皮鴨中的 fly ?勉強(qiáng)的解決方案 ? 在橡皮鴨中覆蓋 fly()方法 ? Fly() { //什么也不干 } ? 如果加入誘餌鴨,不會(huì)飛也不會(huì)叫,如何? D u c k+ q u a c k ( )+ s w im ( )+ f ly ( )+ d is p la y ( )M al l ar d D u c k+ d is p la y ( )R e d h e ad D u c k+ d is p la y ( )R u b b e r D u c k+ q u a c k ( )+ f ly ( )+ d is p la y ( )6 提煉接口 ?繼承可能不是答案 ? 需要經(jīng)常添加不同的鴨子產(chǎn)品,都要檢查并覆蓋方法 ? 新的解決方案:定義接口 7 評(píng)價(jià)方案 ?接口的問題 ? 隨著 Duck的子類越來越多,每種鴨子都要實(shí)現(xiàn)相應(yīng)的接口,重復(fù)代碼越來越多,代碼無法復(fù)用 8 軟件開發(fā)的不變真理 ?不管你在何處工作,構(gòu)建什么,用什么語言編程,伴隨軟件開發(fā)的不變真理 ?Change ?不管軟件當(dāng)初設(shè)計(jì)的多么好,一段時(shí)間乊后,總是需要成長(zhǎng)與改變。 9 問題分析 ?問題 ? 鴨子的行為在子類中不斷變化,繼承難以解決該問題,讓所有子類繼承這些行為是不恰當(dāng)?shù)? ? Flyable和 Quackable接口,想法不錯(cuò),但 Java接口沒有實(shí)現(xiàn)代碼,造成代碼無法復(fù)用,代碼在子類中重復(fù) ? 設(shè)計(jì)原則 ? 找出應(yīng)用中可能需要變化的地方,把它們獨(dú)立出來并“封裝”起來,不要和哪些不需要變化的代碼混合在一起 ? 變化的部分取出并封裝后,便于以后的改動(dòng)或擴(kuò)充,而不影響其它部分 ? 變化的東西: 鴨子的行為 10 提取并封裝類 ?將 Duck類中 fly和 quack方法提取出來 ? 它們是子類中的易于變化的部分 ? 定義 fly相關(guān)的類,封裝鴨子的 fly行為 ? 定義 quack相關(guān)的類,封裝鴨子的 quack行為 ?初步設(shè)想 ? 在獨(dú)立的類中定義鴨子的行為; ? 在 Duck中包含“指定”的行為,甚至可以在運(yùn)行時(shí)動(dòng)態(tài)改變行為 11 鴨子行為類的設(shè)計(jì) ?設(shè)計(jì)原則 ? 針對(duì)接口編程,而不是針對(duì)實(shí)現(xiàn)編程 ?定義行為接口及其實(shí)現(xiàn) ? FlyBehavior和 QuackBehavior接口,定義具體的行為類實(shí)現(xiàn)該接口 ? Duck類依賴行為接口,不關(guān)心行為的具體實(shí)現(xiàn) ? 原來做法的問題:行為或者在 Duck類中實(shí)現(xiàn),或者繼承某個(gè)接口而在子類中實(shí)現(xiàn),依賴實(shí)現(xiàn)細(xì)節(jié)。 12 鴨子行為類的設(shè)計(jì) 13 鴨子類的設(shè)計(jì) public class Duck{ QuackBehavior quackBehavior。 ... public void performQuack(){ ()。 } } D u c k f ly B e h a v io r : F ly B e h a v io r q u a c k B e h a v io r : Q u a c k B e h a v io r+ s w im ( )+ d is p la y ( )+ p e r f o r m Q u a c k ( )+ p e r f o r m F ly ( )public class MallardDuck extends Duck{ public MallardDuck(){ quackBehavior = new Quack()。 flyBehavior = new FlyWithWings()。 } ... } 14 動(dòng)態(tài)綁定鴨子行為 public class Duck{ public void setFlyBehavior(FlyBehavior fb)(){ flyBehavior=fb。 } public void setQuackBehavior(Quac
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1