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