課程簡介
本課程除了深入剖析各種典型的設(shè)計(jì)模式之原理與結(jié)構(gòu)外, 同時(shí)會(huì)抽取大量知名程序庫中的設(shè)計(jì)模式,利用其源碼輔助并加強(qiáng)原理講解。并且結(jié)合講師大量實(shí)際項(xiàng)目案例進(jìn)行分析. 這種方式對于設(shè)計(jì)模式的學(xué)習(xí)有著極大效果。 與其它的仍然沿用傳統(tǒng)模式目錄方式逐一講述每一模式的意圖,結(jié)構(gòu),適應(yīng)性等的培訓(xùn)和圖書完全不同.
課程1/3的時(shí)間介紹設(shè)計(jì)模式思想和原理,1/3時(shí)間案例,并且要求學(xué)員組合成小組進(jìn)行現(xiàn)場設(shè)計(jì). 最后1/3時(shí)間再介紹該案例的設(shè)計(jì)過程,講師帶領(lǐng)大家一起對設(shè)計(jì)結(jié)果進(jìn)行分析,指出不”和諧”的地方,通過逐步運(yùn)用模式,改善設(shè)計(jì). 而不是把最完美的答案一下子放到學(xué)員的面前,讓你佩服.并且分析為什么使用模式,而不是過度設(shè)計(jì),為什么又要放棄模式. 因?yàn)榱私鈨?yōu)秀軟件設(shè)計(jì)的演變過程比學(xué)習(xí)優(yōu)秀設(shè)計(jì)本身更有價(jià)值,因?yàn)樵O(shè)計(jì)的演變過程之中蘊(yùn)藏著大智慧.培訓(xùn)時(shí)根據(jù)實(shí)際情況,可以安排學(xué)員自己的項(xiàng)目代碼或者設(shè)計(jì)作為課程案例進(jìn)行分析和設(shè)計(jì).
目標(biāo)收益
培訓(xùn)對象
課程大綱
第一單元:設(shè)計(jì)模式思想與困惑 |
內(nèi)容一:軟件設(shè)計(jì)模式---模式到底是什么?價(jià)值在哪里? 1.什么是模式 2.為什么需要設(shè)計(jì)模式? 難道就為了面試嗎? 3.設(shè)計(jì)模式能夠給我們帶來什么? 4.設(shè)計(jì)模式學(xué)習(xí)面臨的困難和解決思路 5.從了解模式到正確應(yīng)用模式 1.案例分析---某數(shù)據(jù)傳輸系統(tǒng),在使用模式前解決方案 和 使用模式后的對比 內(nèi)容二:軟件設(shè)計(jì)模式本質(zhì)—你真的知道模式背后的原理嗎? 1.發(fā)現(xiàn)變化進(jìn)行封裝變化 2.把變化與不變必須分離 3.針對接口的編程,而不是針對實(shí)現(xiàn) 4.組合優(yōu)于繼承 1.案例分析—某數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)分析,分析模式背后的本質(zhì) 內(nèi)容三:什么是好的設(shè)計(jì) 1.什么是好的設(shè)計(jì)? 2.難道不使用設(shè)計(jì)模式就是壞的設(shè)計(jì)嗎? 3.為什么需求變化總是使你痛苦? 和你的設(shè)計(jì)有關(guān)系嗎? 4.好的系統(tǒng)設(shè)計(jì)應(yīng)該有如下的性質(zhì):可擴(kuò)展性、靈活性、可插入性。 5.設(shè)計(jì)模式可以使你的設(shè)計(jì)更靈活,更易復(fù)用,更具可擴(kuò)展性 案例分析—某政府目4種設(shè)計(jì)方案的對比, 那種更合適?多種方案的對比 |
第二單元: 面向?qū)ο笏季S |
內(nèi)容一:面向?qū)ο笏季S是模式基礎(chǔ) 1.面向?qū)ο蠓治雠c設(shè)計(jì)的本質(zhì) 2.面向?qū)ο笤O(shè)計(jì)思維與面向過程設(shè)計(jì)思維—職責(zé)驅(qū)動(dòng)設(shè)計(jì) 3.抽象對象模型 4.封裝對象模型 5.繼承對象模型 6.多態(tài)對象模型 7.面向?qū)ο蟪R姷腻e(cuò)誤認(rèn)識(shí)—思考OO帶來的價(jià)值 8.為什么學(xué)習(xí)設(shè)計(jì)模式需要面向?qū)ο笏季S 9.從面向?qū)ο蟮侥J降皆俚秸嬲拿嫦驅(qū)ο?br/>10.案例分析—某稅務(wù)項(xiàng)目, 使用面向?qū)ο笤O(shè)計(jì)和過程化設(shè)計(jì) PK,,難道面向?qū)ο缶鸵欢ㄊ亲顑?yōu)的? 你真正理解面向?qū)ο髥? 面向?qū)ο蟮降渍嬲心男┖锰? 不要人云亦云 ! 內(nèi)容二:面向?qū)ο笤O(shè)計(jì)原則(principles) 1.依賴倒置原則(DIP) 2.控制反轉(zhuǎn)原則(IOC) 3.開放封閉原則(OCP) 4.單一職責(zé)原則(SRP) 5.Liskov 替換原則(LSP) 6.接口隔離原則(ISP) 7.對象組合優(yōu)于類繼承 8.封裝變化點(diǎn) 9.面向接口編程 10.案例分析—每組原則,分別通過案例進(jìn)行分析,為什么需要使用原則進(jìn)行考慮 |
第三單元:設(shè)計(jì)模式應(yīng)用策略2—知道模式 |
內(nèi)容一:知道模式 –你連設(shè)計(jì)模式都不了解, 還算是設(shè)計(jì)師嗎? 1.了解模式-需要知道自己不知道 2.研讀模式的關(guān)鍵4要素 3.創(chuàng)建型模式 4.行為型模式 5.結(jié)構(gòu)型模式 6.該階段經(jīng)常遇到的應(yīng)用問題和對策 7.案例分析—設(shè)計(jì)模式連連看, 你知道模式嗎? 某公司設(shè)計(jì)模式考試題 內(nèi)容二:模式案例– 多功能文件處理系統(tǒng)設(shè)計(jì) 1.介紹項(xiàng)目背景情況,如何應(yīng)對將來的各種變化 2.學(xué)員分組進(jìn)行設(shè)計(jì) 3.應(yīng)用設(shè)計(jì)模式,如何改善設(shè)計(jì) 4.分析設(shè)計(jì)模式是否帶來軟件的可維護(hù)性 5.學(xué)習(xí)(Factory Method/Adapter/Proxy/Observer/Strategy等幾種設(shè)計(jì)模式和設(shè)計(jì)原則) 本節(jié)深入闡述GOF 23種經(jīng)典設(shè)計(jì)模式(包括創(chuàng)建型模式、結(jié)構(gòu)型模式、行為型模式),深入解析它們的意圖、動(dòng)因、原理、實(shí)現(xiàn)與應(yīng)用實(shí)踐。 |
第四單元:設(shè)計(jì)模式應(yīng)用策略3—臨摹大師 |
內(nèi)容一:研讀經(jīng)典系統(tǒng)—學(xué)習(xí)大師如何使用設(shè)計(jì)模式 1.學(xué)習(xí)設(shè)計(jì)模式后,可是無法使用在真實(shí)項(xiàng)目的癥狀 2.分析經(jīng)典作品,重新思考設(shè)計(jì)模式的威力 3.研讀設(shè)計(jì)模式的關(guān)鍵要素 內(nèi)容二:模式案例–薪酬管理系統(tǒng)設(shè)計(jì)模式應(yīng)用分析 1.Robort C Martion 是如何考慮問題的 2.架構(gòu)思路 3.設(shè)計(jì)中的博弈點(diǎn),哪些值得我們學(xué)習(xí) 4.Martion設(shè)計(jì)的過程中是怎樣應(yīng)用設(shè)計(jì)模式的。 5.學(xué)習(xí)設(shè)計(jì)模式(strategy / /Template Method/ Adapter/ Command) 6.通過研讀經(jīng)典學(xué)習(xí)到什么? |
第五單元:設(shè)計(jì)模式應(yīng)用策略4— 你知道如何用模式去思考嗎 |
內(nèi)容一:用模式思考系統(tǒng)設(shè)計(jì) 1.基于模式的設(shè)計(jì)系統(tǒng) 2.用模式思考的過程 3.模式的應(yīng)用層次和組合應(yīng)用模式 4.基于模式的方法和步驟 內(nèi)容二:放棄設(shè)計(jì)模式的智能—只要遵循原則,保持簡單 1.放棄模式更需要智能, 2.設(shè)計(jì)需要的原則 a)重用原則 b)擴(kuò)展原則 c)隔離原則 d)轉(zhuǎn)接原則 e)保變原則 3.案例分析---怎樣去除設(shè)計(jì)模式, 不用設(shè)計(jì)模式 內(nèi)容三:模式案例–電子文件系統(tǒng) 1.項(xiàng)目系統(tǒng)背景和需求 2.典型的場景下,如何考慮使用模式。 3.Bridge / strategy / class explosion的博弈。 4.系統(tǒng)的設(shè)計(jì)的本質(zhì) – 不是為了模式! 5.如何支持第3方接入的運(yùn)用 - Template Method VS. IOC 6.系統(tǒng)的設(shè)計(jì)思考過程 7.展示如何用模式,進(jìn)行設(shè)計(jì) 8.學(xué)習(xí)設(shè)計(jì)模式() 內(nèi)容四:用模式思考系統(tǒng)設(shè)計(jì) 5.基于模式的設(shè)計(jì)系統(tǒng) 6.用模式思考的過程 7.模式的應(yīng)用層次和組合應(yīng)用模式 8.基于模式的方法和步驟 內(nèi)容五:放棄設(shè)計(jì)模式的智能—只要遵循原則,保持簡單 4.放棄模式更需要智能, 5.設(shè)計(jì)需要的原則 a)重用原則 b)擴(kuò)展原則 c)隔離原則 d)轉(zhuǎn)接原則 e)保變原則 6.案例分析---怎樣去除設(shè)計(jì)模式, 不用設(shè)計(jì)模式 內(nèi)容六:模式案例–電子文件系統(tǒng) 9.項(xiàng)目系統(tǒng)背景和需求 10.典型的場景下,如何考慮使用模式。 11.Bridge / strategy / class explosion的博弈。 12.系統(tǒng)的設(shè)計(jì)的本質(zhì) – 不是為了模式! 13.如何支持第3方接入的運(yùn)用 - Template Method VS. IOC 14.系統(tǒng)的設(shè)計(jì)思考過程 15.展示如何用模式,進(jìn)行設(shè)計(jì) |
第六單元:設(shè)計(jì)模式應(yīng)用策略5—重構(gòu)到模式 |
內(nèi)容一:重構(gòu)已有的系統(tǒng) 1.設(shè)計(jì)壞味道概述 2.重構(gòu)思想 3.理解如何結(jié)合重構(gòu)和模式; 4.用模式導(dǎo)向的重構(gòu)(pattern-directed refactoring)改善既有代碼的設(shè)計(jì); 5.找出需要進(jìn)行模式導(dǎo)向重構(gòu)的代碼段; 6.了解為什么使用模式來改善既有的設(shè)計(jì)要優(yōu)于在新的設(shè)計(jì)早期使用模式。 7.一組壞味 (也就是問題),表示需要進(jìn)行模式導(dǎo)向的重構(gòu); 8.實(shí)現(xiàn)同一模式的不同方式的示例; 9.什么時(shí)候應(yīng)該通過重構(gòu)實(shí)現(xiàn)模式、趨向模式以及去除模式給出建議。 10.常見設(shè)計(jì)模式的重構(gòu)演化的過程 內(nèi)容二:案例- 某網(wǎng)絡(luò)數(shù)據(jù)分析系統(tǒng)的設(shè)計(jì) 1.介紹項(xiàng)目需求情況,進(jìn)行設(shè)計(jì) 2.通過重構(gòu)逐步實(shí)現(xiàn)設(shè)計(jì)模式 3.Framework 設(shè)計(jì)思想—好萊塢原則 4.學(xué)習(xí)設(shè)計(jì)模式(Factory Method, Template Method, Composite, Chain of Responsibility ) |
第七單元:設(shè)計(jì)模式對比大討論 |
內(nèi)容一:模式本質(zhì),通過對比了解設(shè)計(jì)模式細(xì)節(jié) 1.創(chuàng)建型模式討論 a)簡單工場 工廠方法 抽象工場 b)Abstract Factory,builder,Prototype 模式 c)單例模式 2.行為型模式 a)Adapter與Bridge b)Composite、Decorator與Proxy c)Fa?ade模式 與 Adapter模式 /Proxy模式 d)Composite 與Iterator模式 3.結(jié)構(gòu)型模式 a)封裝變化-Strategy/State/ Iterator模式 b)封裝結(jié)構(gòu)---Mediator模式與Facade模式 c)對象作為參數(shù)-- Visitor/Command/Mementor d)通信應(yīng)該被封裝還是被分布- Mediator和Observer e)對發(fā)送者和接收者解耦-Command模式與職責(zé)鏈模式 將實(shí)踐中常容易混淆或常常聯(lián)合使用的幾個(gè)模式放在一組討論,對比分析,講解思想。如何發(fā)現(xiàn)、應(yīng)用更多模式。通過對“相似或相關(guān)的設(shè)計(jì)模式”的對比分析,加深理解,是避免“模式誤用”的好方法。 |
第一單元:設(shè)計(jì)模式思想與困惑 內(nèi)容一:軟件設(shè)計(jì)模式---模式到底是什么?價(jià)值在哪里? 1.什么是模式 2.為什么需要設(shè)計(jì)模式? 難道就為了面試嗎? 3.設(shè)計(jì)模式能夠給我們帶來什么? 4.設(shè)計(jì)模式學(xué)習(xí)面臨的困難和解決思路 5.從了解模式到正確應(yīng)用模式 1.案例分析---某數(shù)據(jù)傳輸系統(tǒng),在使用模式前解決方案 和 使用模式后的對比 內(nèi)容二:軟件設(shè)計(jì)模式本質(zhì)—你真的知道模式背后的原理嗎? 1.發(fā)現(xiàn)變化進(jìn)行封裝變化 2.把變化與不變必須分離 3.針對接口的編程,而不是針對實(shí)現(xiàn) 4.組合優(yōu)于繼承 1.案例分析—某數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)分析,分析模式背后的本質(zhì) 內(nèi)容三:什么是好的設(shè)計(jì) 1.什么是好的設(shè)計(jì)? 2.難道不使用設(shè)計(jì)模式就是壞的設(shè)計(jì)嗎? 3.為什么需求變化總是使你痛苦? 和你的設(shè)計(jì)有關(guān)系嗎? 4.好的系統(tǒng)設(shè)計(jì)應(yīng)該有如下的性質(zhì):可擴(kuò)展性、靈活性、可插入性。 5.設(shè)計(jì)模式可以使你的設(shè)計(jì)更靈活,更易復(fù)用,更具可擴(kuò)展性 案例分析—某政府目4種設(shè)計(jì)方案的對比, 那種更合適?多種方案的對比 |
第二單元: 面向?qū)ο笏季S 內(nèi)容一:面向?qū)ο笏季S是模式基礎(chǔ) 1.面向?qū)ο蠓治雠c設(shè)計(jì)的本質(zhì) 2.面向?qū)ο笤O(shè)計(jì)思維與面向過程設(shè)計(jì)思維—職責(zé)驅(qū)動(dòng)設(shè)計(jì) 3.抽象對象模型 4.封裝對象模型 5.繼承對象模型 6.多態(tài)對象模型 7.面向?qū)ο蟪R姷腻e(cuò)誤認(rèn)識(shí)—思考OO帶來的價(jià)值 8.為什么學(xué)習(xí)設(shè)計(jì)模式需要面向?qū)ο笏季S 9.從面向?qū)ο蟮侥J降皆俚秸嬲拿嫦驅(qū)ο?br/>10.案例分析—某稅務(wù)項(xiàng)目, 使用面向?qū)ο笤O(shè)計(jì)和過程化設(shè)計(jì) PK,,難道面向?qū)ο缶鸵欢ㄊ亲顑?yōu)的? 你真正理解面向?qū)ο髥? 面向?qū)ο蟮降渍嬲心男┖锰? 不要人云亦云 ! 內(nèi)容二:面向?qū)ο笤O(shè)計(jì)原則(principles) 1.依賴倒置原則(DIP) 2.控制反轉(zhuǎn)原則(IOC) 3.開放封閉原則(OCP) 4.單一職責(zé)原則(SRP) 5.Liskov 替換原則(LSP) 6.接口隔離原則(ISP) 7.對象組合優(yōu)于類繼承 8.封裝變化點(diǎn) 9.面向接口編程 10.案例分析—每組原則,分別通過案例進(jìn)行分析,為什么需要使用原則進(jìn)行考慮 |
第三單元:設(shè)計(jì)模式應(yīng)用策略2—知道模式 內(nèi)容一:知道模式 –你連設(shè)計(jì)模式都不了解, 還算是設(shè)計(jì)師嗎? 1.了解模式-需要知道自己不知道 2.研讀模式的關(guān)鍵4要素 3.創(chuàng)建型模式 4.行為型模式 5.結(jié)構(gòu)型模式 6.該階段經(jīng)常遇到的應(yīng)用問題和對策 7.案例分析—設(shè)計(jì)模式連連看, 你知道模式嗎? 某公司設(shè)計(jì)模式考試題 內(nèi)容二:模式案例– 多功能文件處理系統(tǒng)設(shè)計(jì) 1.介紹項(xiàng)目背景情況,如何應(yīng)對將來的各種變化 2.學(xué)員分組進(jìn)行設(shè)計(jì) 3.應(yīng)用設(shè)計(jì)模式,如何改善設(shè)計(jì) 4.分析設(shè)計(jì)模式是否帶來軟件的可維護(hù)性 5.學(xué)習(xí)(Factory Method/Adapter/Proxy/Observer/Strategy等幾種設(shè)計(jì)模式和設(shè)計(jì)原則) 本節(jié)深入闡述GOF 23種經(jīng)典設(shè)計(jì)模式(包括創(chuàng)建型模式、結(jié)構(gòu)型模式、行為型模式),深入解析它們的意圖、動(dòng)因、原理、實(shí)現(xiàn)與應(yīng)用實(shí)踐。 |
第四單元:設(shè)計(jì)模式應(yīng)用策略3—臨摹大師 內(nèi)容一:研讀經(jīng)典系統(tǒng)—學(xué)習(xí)大師如何使用設(shè)計(jì)模式 1.學(xué)習(xí)設(shè)計(jì)模式后,可是無法使用在真實(shí)項(xiàng)目的癥狀 2.分析經(jīng)典作品,重新思考設(shè)計(jì)模式的威力 3.研讀設(shè)計(jì)模式的關(guān)鍵要素 內(nèi)容二:模式案例–薪酬管理系統(tǒng)設(shè)計(jì)模式應(yīng)用分析 1.Robort C Martion 是如何考慮問題的 2.架構(gòu)思路 3.設(shè)計(jì)中的博弈點(diǎn),哪些值得我們學(xué)習(xí) 4.Martion設(shè)計(jì)的過程中是怎樣應(yīng)用設(shè)計(jì)模式的。 5.學(xué)習(xí)設(shè)計(jì)模式(strategy / /Template Method/ Adapter/ Command) 6.通過研讀經(jīng)典學(xué)習(xí)到什么? |
第五單元:設(shè)計(jì)模式應(yīng)用策略4— 你知道如何用模式去思考嗎 內(nèi)容一:用模式思考系統(tǒng)設(shè)計(jì) 1.基于模式的設(shè)計(jì)系統(tǒng) 2.用模式思考的過程 3.模式的應(yīng)用層次和組合應(yīng)用模式 4.基于模式的方法和步驟 內(nèi)容二:放棄設(shè)計(jì)模式的智能—只要遵循原則,保持簡單 1.放棄模式更需要智能, 2.設(shè)計(jì)需要的原則 a)重用原則 b)擴(kuò)展原則 c)隔離原則 d)轉(zhuǎn)接原則 e)保變原則 3.案例分析---怎樣去除設(shè)計(jì)模式, 不用設(shè)計(jì)模式 內(nèi)容三:模式案例–電子文件系統(tǒng) 1.項(xiàng)目系統(tǒng)背景和需求 2.典型的場景下,如何考慮使用模式。 3.Bridge / strategy / class explosion的博弈。 4.系統(tǒng)的設(shè)計(jì)的本質(zhì) – 不是為了模式! 5.如何支持第3方接入的運(yùn)用 - Template Method VS. IOC 6.系統(tǒng)的設(shè)計(jì)思考過程 7.展示如何用模式,進(jìn)行設(shè)計(jì) 8.學(xué)習(xí)設(shè)計(jì)模式() 內(nèi)容四:用模式思考系統(tǒng)設(shè)計(jì) 5.基于模式的設(shè)計(jì)系統(tǒng) 6.用模式思考的過程 7.模式的應(yīng)用層次和組合應(yīng)用模式 8.基于模式的方法和步驟 內(nèi)容五:放棄設(shè)計(jì)模式的智能—只要遵循原則,保持簡單 4.放棄模式更需要智能, 5.設(shè)計(jì)需要的原則 a)重用原則 b)擴(kuò)展原則 c)隔離原則 d)轉(zhuǎn)接原則 e)保變原則 6.案例分析---怎樣去除設(shè)計(jì)模式, 不用設(shè)計(jì)模式 內(nèi)容六:模式案例–電子文件系統(tǒng) 9.項(xiàng)目系統(tǒng)背景和需求 10.典型的場景下,如何考慮使用模式。 11.Bridge / strategy / class explosion的博弈。 12.系統(tǒng)的設(shè)計(jì)的本質(zhì) – 不是為了模式! 13.如何支持第3方接入的運(yùn)用 - Template Method VS. IOC 14.系統(tǒng)的設(shè)計(jì)思考過程 15.展示如何用模式,進(jìn)行設(shè)計(jì) |
第六單元:設(shè)計(jì)模式應(yīng)用策略5—重構(gòu)到模式 內(nèi)容一:重構(gòu)已有的系統(tǒng) 1.設(shè)計(jì)壞味道概述 2.重構(gòu)思想 3.理解如何結(jié)合重構(gòu)和模式; 4.用模式導(dǎo)向的重構(gòu)(pattern-directed refactoring)改善既有代碼的設(shè)計(jì); 5.找出需要進(jìn)行模式導(dǎo)向重構(gòu)的代碼段; 6.了解為什么使用模式來改善既有的設(shè)計(jì)要優(yōu)于在新的設(shè)計(jì)早期使用模式。 7.一組壞味 (也就是問題),表示需要進(jìn)行模式導(dǎo)向的重構(gòu); 8.實(shí)現(xiàn)同一模式的不同方式的示例; 9.什么時(shí)候應(yīng)該通過重構(gòu)實(shí)現(xiàn)模式、趨向模式以及去除模式給出建議。 10.常見設(shè)計(jì)模式的重構(gòu)演化的過程 內(nèi)容二:案例- 某網(wǎng)絡(luò)數(shù)據(jù)分析系統(tǒng)的設(shè)計(jì) 1.介紹項(xiàng)目需求情況,進(jìn)行設(shè)計(jì) 2.通過重構(gòu)逐步實(shí)現(xiàn)設(shè)計(jì)模式 3.Framework 設(shè)計(jì)思想—好萊塢原則 4.學(xué)習(xí)設(shè)計(jì)模式(Factory Method, Template Method, Composite, Chain of Responsibility ) |
第七單元:設(shè)計(jì)模式對比大討論 內(nèi)容一:模式本質(zhì),通過對比了解設(shè)計(jì)模式細(xì)節(jié) 1.創(chuàng)建型模式討論 a)簡單工場 工廠方法 抽象工場 b)Abstract Factory,builder,Prototype 模式 c)單例模式 2.行為型模式 a)Adapter與Bridge b)Composite、Decorator與Proxy c)Fa?ade模式 與 Adapter模式 /Proxy模式 d)Composite 與Iterator模式 3.結(jié)構(gòu)型模式 a)封裝變化-Strategy/State/ Iterator模式 b)封裝結(jié)構(gòu)---Mediator模式與Facade模式 c)對象作為參數(shù)-- Visitor/Command/Mementor d)通信應(yīng)該被封裝還是被分布- Mediator和Observer e)對發(fā)送者和接收者解耦-Command模式與職責(zé)鏈模式 將實(shí)踐中常容易混淆或常常聯(lián)合使用的幾個(gè)模式放在一組討論,對比分析,講解思想。如何發(fā)現(xiàn)、應(yīng)用更多模式。通過對“相似或相關(guān)的設(shè)計(jì)模式”的對比分析,加深理解,是避免“模式誤用”的好方法。 |