課程簡介
本課程涵蓋 面向?qū)ο笤O(shè)計原則、GRASP模式、GOF經(jīng)典設(shè)計模式、其他經(jīng)典的模式、架構(gòu)模式5個方面,從面向?qū)Ψ匠霭l(fā),對重要的設(shè)計模式和軟件設(shè)計原則進行了分析與講解;以多個真實的項目為案例,深入講解設(shè)計模式的運用;提供了大量的項目實例與代碼,展現(xiàn)設(shè)計模式的結(jié)構(gòu)。
目標收益
培訓(xùn)對象
課程內(nèi)容
面向?qū)ο笤O(shè)計原則 開閉原則 / 依賴倒置原則 / 單一職責原則 / 里氏替換原則 /合成/聚合復(fù)用原則 Solid原則程序員必知---如果還不知道,被鄙視
GRASP模式 通用職責分配軟件模式:
創(chuàng)建者 /信息專家 /低耦合/ 控制器/ 高內(nèi)聚 / 多態(tài) / 純虛構(gòu)/ 間接性 / 保護變化 面向?qū)ο舐氊煼峙湓瓌t
GOF經(jīng)典設(shè)計模式 創(chuàng)建型模式:抽象工廠模式、建造者模式、工廠模式
結(jié)構(gòu)型模式:適配器模式、橋接模式、裝飾模式、組合模式、外觀模式。
行為型模式:模版方法模式、命令模式、迭代器模式、觀察者模式、中介者模式、狀態(tài)模式、策略模式、職責鏈模式、訪問者模式。 課程會涉及所有23種Gof模式,并將重點放在此處列出的17種常見模式的深入講解
其他經(jīng)典的模式 生產(chǎn)者-消費者模式 / IOC / 依賴注入DI / Null 模式 / 表格驅(qū)動法 / 主動對象 經(jīng)常在軟件設(shè)計時使用的模式
架構(gòu)模式 Pipe Filter架構(gòu)模式/Layer架構(gòu)模式/Microkernel Pattern/MVC/ 經(jīng)典的機構(gòu)級模式
此外,本課程對軟件模塊劃分,及如何為模塊劃分職責進行了詳盡的講解及分析,揭示了軟件設(shè)計原理及設(shè)計過程;幫助架構(gòu)師掌握架構(gòu)設(shè)計方法與架構(gòu)設(shè)計的模式;本課還幫助設(shè)計人員掌握領(lǐng)域分析與建模的正確方法;幫助設(shè)計人員進行IT數(shù)據(jù)結(jié)構(gòu)設(shè)計及實例等。
課程大綱
第一單元 優(yōu)秀系統(tǒng)與不佳系統(tǒng)的辨析——設(shè)計模式初探 |
內(nèi)容一:什么是優(yōu)秀的設(shè)計的設(shè)計 1. 什么是好的軟件設(shè)計和衡量的手段 2. 可擴展性(Extensibility)容易添加新的功能. 結(jié)合案例,通過那些手段如何實現(xiàn)該目標 3. 靈活性(Flexibility)代碼修改平穩(wěn)地發(fā)生. 結(jié)合案例,通過那些手段如何實現(xiàn)該目標 4. 可插入性(Pluggability)容易將一個類抽出去,同時將另一個有同樣接口的類加入進來. 結(jié)合案例,通過那些手段如何實現(xiàn)該目標 5. 如何寫出簡練,易于理解,模塊化,層次性,設(shè)計良好,高效,優(yōu)雅,并且清晰的系統(tǒng)。 6. 劣質(zhì)代碼有什么特征 7. 劣質(zhì)代碼的代價 8. 設(shè)計模式在構(gòu)建優(yōu)秀系統(tǒng)及避免不佳設(shè)計中的用途。 9. 分析真實項目,如何做的詳細設(shè)計,給我們哪些啟示,我們可以學(xué)習(xí)到什么 10. 分析我們在項目之中是那些原因?qū)е铝藳]有實現(xiàn)這些目標. 內(nèi)容二:案例 11. 某檔案移交接收系統(tǒng):紛繁復(fù)雜的嵌套判斷 12. 某多媒體制作軟件:上傳-下載模塊 13. 案例涉及,需要詳細學(xué)習(xí)如下設(shè)計模式及原則: 14. 簡單工廠、單例、策略模式 15. 重點:如何組織自己的代碼和模塊:指令與查詢分離原則。 16. 對有多年編程經(jīng)驗的人員,函數(shù)級的編碼是小兒科? 17. 分析模式使用前和后的對比 |
第二單元 設(shè)計模式與面向?qū)ο笤O(shè)計原則 |
內(nèi)容一:面向?qū)ο笤O(shè)計原則與設(shè)計模式關(guān)系 1. 軟件設(shè)計目標,基本原則和模式關(guān)系 2. 開閉原則 3. 依賴倒置原則 4. 單一職責原則 5. 里氏替換原則 6. 合成/聚合復(fù)用原則 7. 接口隔離原則和Demeter法則 8. 通過案例進行分析,模式如何使用 內(nèi)容二:案例分析—OO基本原則與設(shè)計模式 1. 通過經(jīng)典面向?qū)ο蟀咐?要求學(xué)員分別使用過程式和面向?qū)ο?種思維,進行設(shè)計 2. 進行對比2種思維的不同點和結(jié)果 3. 學(xué)員通過案例指出OO是否真正做到了它所說的價值 4. 這些小案例涉及項目開發(fā)中的常見的困境、疑惑,本節(jié)探討如何通過設(shè)計原則解決。 5. 討論設(shè)計原則與設(shè)計模式的關(guān)系,已經(jīng)在沒有合適模式可用的情況下如何分析、解決問題。涉及如下模式: a) Fa?ade b) 觀察者模式與表驅(qū)動法 c) Bridge模式 d) Template Method模式 e) Strategy模式 |
第三單元 系統(tǒng)/模塊中的接口設(shè)計,及對外暴露服務(wù)技巧——組織接口型模式 |
內(nèi)容一:內(nèi)存接口及Web接口的設(shè)計及討論 1. 接口分離原則 2. 面向?qū)ο蟮囊c 3. 系統(tǒng)交互時,松散耦合的設(shè)計要點 4. 無狀態(tài)在接口設(shè)計中的重要性,及設(shè)計實踐 5. 接口的粒度 6. 接口調(diào)用次數(shù)與粒度的折中 7. 接口版本的設(shè)計 8. 新舊接口的兼容性設(shè)計技巧——只增不改、靈活參數(shù)等 內(nèi)容二:組織接口型模式 1. 適配器模式。Adapter a) 適配器模式介紹。 b) 容易被忽略的情況:關(guān)于接口的修改。 c) 適配器總結(jié)。 例:文件解析器系統(tǒng)的接口設(shè)計。 2. 外觀模式。 a) 令人望而生畏的API函數(shù)。 b) 外觀模式的作用。 c) 容易被忽略的外觀。 d) 外觀模式與適配器的辨析。 例:文件解析器系統(tǒng)的外觀設(shè)計。 3. 中介者模式 a) 中介者模式的使用場景。 b) 中介者模式在架構(gòu)中的重要地位。 c) 中介者模式與控制者。 |
第四單元 如何在系統(tǒng)及框架中創(chuàng)建并管理對象/模塊? ——創(chuàng)建型模式 |
內(nèi)容一:對象及模塊創(chuàng)建的管理 1. 對象創(chuàng)建與IOC模式 2. 框架設(shè)計中的對象管理——SpringBean分析 3. 在分層架構(gòu)中,對象創(chuàng)建的要點 內(nèi)容二:創(chuàng)建型模式 1. 單例模式。 a) 單例模式的意義。 b) 多線程中的問題。 例:引入單例模式。 2. 工廠模式 a) 工廠模式的使用場景。 b) 工廠模式與反射。 例:引入工廠模式。 3. 抽象工廠模式 a) 創(chuàng)建不同對象的多個系列產(chǎn)品。 b) 工廠模式與抽象工廠模式的區(qū)別。 例:引入抽象工廠模式。 4. 構(gòu)造者模式 a) 構(gòu)造者模式的應(yīng)用場景。 b) 構(gòu)造者模式中的控制者。 5. 原型模式 a) 作為工廠的原型 b) 利用克隆進行原型 |
第五單元 如何設(shè)計出高可擴展性的系統(tǒng)!——擴展型模式 |
內(nèi)容一:如何應(yīng)對需求的變化 —— 打造高可擴展性的系統(tǒng)! 1. 從技術(shù)的角度,如何應(yīng)對需求的變化? 2. 高可擴展性系統(tǒng)的特點及達成方式的變遷 3. 框架設(shè)計的常用方法 4. 如何平衡精巧系統(tǒng)的設(shè)計和開發(fā)成本的投入? 5. 不要生硬地套用模式 —— 橋接模式的靈活使用 內(nèi)容二:擴展型模式 6. 功能與邏輯的關(guān)系 a) 功能模塊的設(shè)計要點。 b) 邏輯模塊的設(shè)計要點。 c) 系統(tǒng)穩(wěn)定及可擴展的秘訣。 7. 模板方法模式 a) 部分的多態(tài)。 b) 模板方法模式的使用場合。 c) 模板方法模式與IOC。 例:文件解析器中的模板方法模式。 8. 策略模式 a) 繼承與組合的辨析。 b) 多態(tài)的經(jīng)典使用。 c) 無處不在的策略模式。 例:運輸系統(tǒng);在多窗口系統(tǒng)中引入策略模式。 9. 橋接模式 a) 從“類爆炸”說起。 b) 復(fù)雜多對多的處理。 c) 僅針對接口編程是不夠的。 d) 橋接模式的要點:抽象類行為的具體實現(xiàn)中有重復(fù)的方法。 e) 從橋接模式到面向?qū)ο蟮恼`區(qū)。 例:在文件解析器中引入橋接模式。 10. 狀態(tài)模式 a) 狀態(tài)模式的本質(zhì):類狀態(tài)機。 b) 狀態(tài)模式的前提條件:經(jīng)常發(fā)生改變的是狀態(tài)(業(yè)務(wù)流程),而非對應(yīng)的處理。 c) 狀態(tài)模式使用。 d) 狀態(tài)模式與表驅(qū)動法。 e) 策略、橋接、狀態(tài)、模板方法模式的辨析。 11. 裝飾模式 a) 裝飾模式的使用場合。 b) 裝飾模式的要點。 c) Java中的裝飾模式。 例:裝飾模式在打印中的使用。 12. 代理模式 a) 代理模式的使用場合。 b) 代理模式的要點。 c) 代理模式與AOP 13. 訪問者模式 a) 訪問者模式的使用場合。 b) 雙重分發(fā)機制。 c) 與橋接模式的比較。 例:在演示控制系統(tǒng)中引入橋接模式。 14. 責任鏈模式 a) 責任鏈模式的使用場合。 b) 責任鏈模式的要點。 c) 消息路由與責任鏈模式。 15. 組合模式 a) 組合模式的使用場合。 b) 組合模式的使用要點。 c) 例:組合模式在表單統(tǒng)計中的使用。 |
第六單元 系統(tǒng)流程控制的設(shè)計——操作型模式 |
內(nèi)容一:系統(tǒng)中流程控制的設(shè)計 1. 類名暗含的意味 2. 臨時創(chuàng)建對象的用途 3. 工作流與命令模式 4. 消費者-生產(chǎn)者模式 5. 消息廣播的多種實現(xiàn)形態(tài) 內(nèi)容二:操作型模式 6. 命令模式 1) 命令模式的特點、優(yōu)點及缺點。 2) 命令模式的典型使用場合。 例:在客戶端與服務(wù)器端傳遞命令。 例:在元搜索系統(tǒng)中使用命令模式。 7. 觀察者模式 1) 觀察者模式的使用場景。 2) 觀察者模式與MVC。 3) 觀察者模式使用中變體。 例:用觀察者模式解決多窗口系統(tǒng)的聯(lián)動問題。 8. 享元模式 1) 享元模式的使用場景。 2) 內(nèi)存管理:存根(stub)與享元模式。 9. 備忘錄模式 1) 備忘錄的使用場景。 10. 迭代器模式 1) Java、stl、c#中的迭代器實例。 例:構(gòu)造統(tǒng)一的樹狀結(jié)構(gòu)迭代。 11. 解析器模式: 1) 解析器模式的使用場合。 |
第七單元 如何才能正確使用模式 |
內(nèi)容一:設(shè)計模式的精髓——封裝變化 1. 設(shè)計模式精髓—如何應(yīng)對變化 2. 封裝變化的原則——避免“散彈槍式的外科手術(shù)” 3. 如何抽取出系統(tǒng)中的變化點及不變點 4. 不同因素的隔離——保護變量原則 5. 設(shè)計模式中封裝變化的思想和具體手段探討 內(nèi)容二:模式案例–某訂單系統(tǒng) 1. 介紹項目需求情況,進行設(shè)計 2. 學(xué)習(xí)設(shè)計模式(Strategy / Abstrct Factory/ Template Method) 內(nèi)容三:模式案例–某數(shù)據(jù)展示系統(tǒng) 1. 項目子系統(tǒng)背景和需求 2. 系統(tǒng)的設(shè)計思考過程 3. 展示如何用模式,進行設(shè)計 4. 學(xué)習(xí)設(shè)計模式(Strategy /Command/Template Method/ NULL Objecct /Adapter/表驅(qū)動法/Singleton ) 內(nèi)容四:模式案例–某數(shù)據(jù)分析系統(tǒng) 1. 項目子系統(tǒng)背景和需求 2. 系統(tǒng)的設(shè)計思考過程 3. 展示如何用模式,進行設(shè)計 4. 學(xué)習(xí)設(shè)計模式(Observer / Visitor/ Composite /Command/ Strategy /Adapter/Singleton ) |
第八單元 重構(gòu)到模式 |
內(nèi)容一:重構(gòu)到模式----錯了再改,事不過三 1. 設(shè)計壞味道概述 2. 重構(gòu)思想 3. 重構(gòu)到設(shè)計模式 4. 常見設(shè)計模式的重構(gòu)演化的過程 內(nèi)容二:案例- 網(wǎng)絡(luò)數(shù)據(jù)分析系統(tǒng)的設(shè)計 1. 介紹項目需求情況,進行設(shè)計 2. 通過重構(gòu)逐步實現(xiàn)設(shè)計模式 3. Framework 設(shè)計思想—好萊塢原則 4. 學(xué)習(xí)設(shè)計模式 5. Factory模式 6. Strategy模式 7. Decorator模式 8. Observer模式 9. 架構(gòu)模式-分層、管道過濾器模式 10. 架構(gòu)模式的重構(gòu)及演變,每步的依據(jù)及效果對比 11. 從結(jié)構(gòu)上考慮、從效率上考慮 |
第九單元 用模式去思考—對設(shè)計模式本質(zhì)的思索及探討 |
內(nèi)容一:模式案例- 數(shù)據(jù)文件處理系統(tǒng) 1. 項目背景介紹和前期規(guī)劃 2. 從最初的需求進行分析,到系統(tǒng)的設(shè)計,最后到編碼實現(xiàn)該案例,全程進行面向?qū)ο蟮姆治?建模,設(shè)計和最終的開發(fā)實現(xiàn). 3. 學(xué)習(xí)IOC思想在框架設(shè)計中的重要作用 4. 在案例中自然使用模式,而非生搬硬套! (Fa?ade, Strategy、Template Method 、Mediator, Simple Factory Command,模式) 5. 案例采用逐步推演的方法,針對需求的不斷變化進行設(shè)計的演變。設(shè)計靈活的系統(tǒng)框架 6. 通過案例學(xué)習(xí)怎樣才能合適應(yīng)用模式 內(nèi)容二:設(shè)計模式的本質(zhì)探討 1. 指出什么是優(yōu)秀設(shè)計和丑陋設(shè)計 2. 總結(jié)自己的模式-神似而非型似 3. 探討相似模式的本質(zhì) 4. “間接類”模式的推演及演化 5. “流程類”模式的推演及演化 6. 避免模式的誤用,討論模式的陷阱:在看似典型的場景,但不宜使用模式的場合。 內(nèi)容三:案例- 元搜索系統(tǒng)分析及設(shè)計 1. 簡單背景介紹 2. 如何面對紛繁的變化因素的組合 3. 一定要使用模式嗎——如果能很好地能抽象、隔離不同因素,也許它就是模式。 4. 討論Command模式的本質(zhì)。 內(nèi)容四:案例- 電子文件生成 1. 簡單背景介紹 2. 使用模式的第一反應(yīng),及陷入陷阱的思索 3. 具體場景使用模式的本質(zhì)討論 4. 多態(tài)的本質(zhì) 5. 討論并介紹表驅(qū)動法 6. Template Method、DIP原則Strategy模式的的靈活使用——獲得優(yōu)雅的設(shè)計 |
第十單元 大型系統(tǒng)中的模式運用 |
內(nèi)容一:大型系統(tǒng)的及發(fā)展及核心技術(shù) ? 應(yīng)用服務(wù)和數(shù)據(jù)服務(wù)分離 ? 使用緩存改善避免數(shù)據(jù)庫瓶頸 ? 應(yīng)用服務(wù)器集群和負載均衡避免運用服務(wù)器瓶頸 ? 數(shù)據(jù)庫讀寫分離 ? 用CDN及分布式文件系統(tǒng)加速系統(tǒng)響應(yīng) ? 分布式數(shù)據(jù)庫系統(tǒng)及NoSQL運用 ? 進行橫向的業(yè)務(wù)拆分 ? 分布式服務(wù),打造自己的軟件生態(tài)環(huán)境 內(nèi)容二:系統(tǒng)的負載均衡模式 ? HTTP 重定向負載均衡 ? DNS 域名解析負載均衡 ? 反向代理負載均衡 ? IP(NAT) 負載均衡 ? 數(shù)據(jù)鏈路層負載均衡 ? 負載均衡算法-hash一致性算法 內(nèi)容三:系統(tǒng)的緩存模式 ? 客戶端緩存策略(瀏覽器緩存、本地Navtive代碼緩存) ? 代理服務(wù)器緩存 ? CDN緩存 ? 反向代理服務(wù)器緩存 ? Memcached 分布式緩存集群的訪問模型 ? Memcached 分布式緩存集群的伸縮性方案 ? 分布式緩存的一致性Hash 算法 典型案例分析:緩存策略如何應(yīng)用在自己的實際項目中 內(nèi)容四:分布式數(shù)據(jù)存儲策略 ? 分布式文件系統(tǒng) ? 數(shù)據(jù)存儲服務(wù)器集群 ? NoSQL 數(shù)據(jù)庫 |
第一單元 優(yōu)秀系統(tǒng)與不佳系統(tǒng)的辨析——設(shè)計模式初探 內(nèi)容一:什么是優(yōu)秀的設(shè)計的設(shè)計 1. 什么是好的軟件設(shè)計和衡量的手段 2. 可擴展性(Extensibility)容易添加新的功能. 結(jié)合案例,通過那些手段如何實現(xiàn)該目標 3. 靈活性(Flexibility)代碼修改平穩(wěn)地發(fā)生. 結(jié)合案例,通過那些手段如何實現(xiàn)該目標 4. 可插入性(Pluggability)容易將一個類抽出去,同時將另一個有同樣接口的類加入進來. 結(jié)合案例,通過那些手段如何實現(xiàn)該目標 5. 如何寫出簡練,易于理解,模塊化,層次性,設(shè)計良好,高效,優(yōu)雅,并且清晰的系統(tǒng)。 6. 劣質(zhì)代碼有什么特征 7. 劣質(zhì)代碼的代價 8. 設(shè)計模式在構(gòu)建優(yōu)秀系統(tǒng)及避免不佳設(shè)計中的用途。 9. 分析真實項目,如何做的詳細設(shè)計,給我們哪些啟示,我們可以學(xué)習(xí)到什么 10. 分析我們在項目之中是那些原因?qū)е铝藳]有實現(xiàn)這些目標. 內(nèi)容二:案例 11. 某檔案移交接收系統(tǒng):紛繁復(fù)雜的嵌套判斷 12. 某多媒體制作軟件:上傳-下載模塊 13. 案例涉及,需要詳細學(xué)習(xí)如下設(shè)計模式及原則: 14. 簡單工廠、單例、策略模式 15. 重點:如何組織自己的代碼和模塊:指令與查詢分離原則。 16. 對有多年編程經(jīng)驗的人員,函數(shù)級的編碼是小兒科? 17. 分析模式使用前和后的對比 |
第二單元 設(shè)計模式與面向?qū)ο笤O(shè)計原則 內(nèi)容一:面向?qū)ο笤O(shè)計原則與設(shè)計模式關(guān)系 1. 軟件設(shè)計目標,基本原則和模式關(guān)系 2. 開閉原則 3. 依賴倒置原則 4. 單一職責原則 5. 里氏替換原則 6. 合成/聚合復(fù)用原則 7. 接口隔離原則和Demeter法則 8. 通過案例進行分析,模式如何使用 內(nèi)容二:案例分析—OO基本原則與設(shè)計模式 1. 通過經(jīng)典面向?qū)ο蟀咐?要求學(xué)員分別使用過程式和面向?qū)ο?種思維,進行設(shè)計 2. 進行對比2種思維的不同點和結(jié)果 3. 學(xué)員通過案例指出OO是否真正做到了它所說的價值 4. 這些小案例涉及項目開發(fā)中的常見的困境、疑惑,本節(jié)探討如何通過設(shè)計原則解決。 5. 討論設(shè)計原則與設(shè)計模式的關(guān)系,已經(jīng)在沒有合適模式可用的情況下如何分析、解決問題。涉及如下模式: a) Fa?ade b) 觀察者模式與表驅(qū)動法 c) Bridge模式 d) Template Method模式 e) Strategy模式 |
第三單元 系統(tǒng)/模塊中的接口設(shè)計,及對外暴露服務(wù)技巧——組織接口型模式 內(nèi)容一:內(nèi)存接口及Web接口的設(shè)計及討論 1. 接口分離原則 2. 面向?qū)ο蟮囊c 3. 系統(tǒng)交互時,松散耦合的設(shè)計要點 4. 無狀態(tài)在接口設(shè)計中的重要性,及設(shè)計實踐 5. 接口的粒度 6. 接口調(diào)用次數(shù)與粒度的折中 7. 接口版本的設(shè)計 8. 新舊接口的兼容性設(shè)計技巧——只增不改、靈活參數(shù)等 內(nèi)容二:組織接口型模式 1. 適配器模式。Adapter a) 適配器模式介紹。 b) 容易被忽略的情況:關(guān)于接口的修改。 c) 適配器總結(jié)。 例:文件解析器系統(tǒng)的接口設(shè)計。 2. 外觀模式。 a) 令人望而生畏的API函數(shù)。 b) 外觀模式的作用。 c) 容易被忽略的外觀。 d) 外觀模式與適配器的辨析。 例:文件解析器系統(tǒng)的外觀設(shè)計。 3. 中介者模式 a) 中介者模式的使用場景。 b) 中介者模式在架構(gòu)中的重要地位。 c) 中介者模式與控制者。 |
第四單元 如何在系統(tǒng)及框架中創(chuàng)建并管理對象/模塊? ——創(chuàng)建型模式 內(nèi)容一:對象及模塊創(chuàng)建的管理 1. 對象創(chuàng)建與IOC模式 2. 框架設(shè)計中的對象管理——SpringBean分析 3. 在分層架構(gòu)中,對象創(chuàng)建的要點 內(nèi)容二:創(chuàng)建型模式 1. 單例模式。 a) 單例模式的意義。 b) 多線程中的問題。 例:引入單例模式。 2. 工廠模式 a) 工廠模式的使用場景。 b) 工廠模式與反射。 例:引入工廠模式。 3. 抽象工廠模式 a) 創(chuàng)建不同對象的多個系列產(chǎn)品。 b) 工廠模式與抽象工廠模式的區(qū)別。 例:引入抽象工廠模式。 4. 構(gòu)造者模式 a) 構(gòu)造者模式的應(yīng)用場景。 b) 構(gòu)造者模式中的控制者。 5. 原型模式 a) 作為工廠的原型 b) 利用克隆進行原型 |
第五單元 如何設(shè)計出高可擴展性的系統(tǒng)!——擴展型模式 內(nèi)容一:如何應(yīng)對需求的變化 —— 打造高可擴展性的系統(tǒng)! 1. 從技術(shù)的角度,如何應(yīng)對需求的變化? 2. 高可擴展性系統(tǒng)的特點及達成方式的變遷 3. 框架設(shè)計的常用方法 4. 如何平衡精巧系統(tǒng)的設(shè)計和開發(fā)成本的投入? 5. 不要生硬地套用模式 —— 橋接模式的靈活使用 內(nèi)容二:擴展型模式 6. 功能與邏輯的關(guān)系 a) 功能模塊的設(shè)計要點。 b) 邏輯模塊的設(shè)計要點。 c) 系統(tǒng)穩(wěn)定及可擴展的秘訣。 7. 模板方法模式 a) 部分的多態(tài)。 b) 模板方法模式的使用場合。 c) 模板方法模式與IOC。 例:文件解析器中的模板方法模式。 8. 策略模式 a) 繼承與組合的辨析。 b) 多態(tài)的經(jīng)典使用。 c) 無處不在的策略模式。 例:運輸系統(tǒng);在多窗口系統(tǒng)中引入策略模式。 9. 橋接模式 a) 從“類爆炸”說起。 b) 復(fù)雜多對多的處理。 c) 僅針對接口編程是不夠的。 d) 橋接模式的要點:抽象類行為的具體實現(xiàn)中有重復(fù)的方法。 e) 從橋接模式到面向?qū)ο蟮恼`區(qū)。 例:在文件解析器中引入橋接模式。 10. 狀態(tài)模式 a) 狀態(tài)模式的本質(zhì):類狀態(tài)機。 b) 狀態(tài)模式的前提條件:經(jīng)常發(fā)生改變的是狀態(tài)(業(yè)務(wù)流程),而非對應(yīng)的處理。 c) 狀態(tài)模式使用。 d) 狀態(tài)模式與表驅(qū)動法。 e) 策略、橋接、狀態(tài)、模板方法模式的辨析。 11. 裝飾模式 a) 裝飾模式的使用場合。 b) 裝飾模式的要點。 c) Java中的裝飾模式。 例:裝飾模式在打印中的使用。 12. 代理模式 a) 代理模式的使用場合。 b) 代理模式的要點。 c) 代理模式與AOP 13. 訪問者模式 a) 訪問者模式的使用場合。 b) 雙重分發(fā)機制。 c) 與橋接模式的比較。 例:在演示控制系統(tǒng)中引入橋接模式。 14. 責任鏈模式 a) 責任鏈模式的使用場合。 b) 責任鏈模式的要點。 c) 消息路由與責任鏈模式。 15. 組合模式 a) 組合模式的使用場合。 b) 組合模式的使用要點。 c) 例:組合模式在表單統(tǒng)計中的使用。 |
第六單元 系統(tǒng)流程控制的設(shè)計——操作型模式 內(nèi)容一:系統(tǒng)中流程控制的設(shè)計 1. 類名暗含的意味 2. 臨時創(chuàng)建對象的用途 3. 工作流與命令模式 4. 消費者-生產(chǎn)者模式 5. 消息廣播的多種實現(xiàn)形態(tài) 內(nèi)容二:操作型模式 6. 命令模式 1) 命令模式的特點、優(yōu)點及缺點。 2) 命令模式的典型使用場合。 例:在客戶端與服務(wù)器端傳遞命令。 例:在元搜索系統(tǒng)中使用命令模式。 7. 觀察者模式 1) 觀察者模式的使用場景。 2) 觀察者模式與MVC。 3) 觀察者模式使用中變體。 例:用觀察者模式解決多窗口系統(tǒng)的聯(lián)動問題。 8. 享元模式 1) 享元模式的使用場景。 2) 內(nèi)存管理:存根(stub)與享元模式。 9. 備忘錄模式 1) 備忘錄的使用場景。 10. 迭代器模式 1) Java、stl、c#中的迭代器實例。 例:構(gòu)造統(tǒng)一的樹狀結(jié)構(gòu)迭代。 11. 解析器模式: 1) 解析器模式的使用場合。 |
第七單元 如何才能正確使用模式 內(nèi)容一:設(shè)計模式的精髓——封裝變化 1. 設(shè)計模式精髓—如何應(yīng)對變化 2. 封裝變化的原則——避免“散彈槍式的外科手術(shù)” 3. 如何抽取出系統(tǒng)中的變化點及不變點 4. 不同因素的隔離——保護變量原則 5. 設(shè)計模式中封裝變化的思想和具體手段探討 內(nèi)容二:模式案例–某訂單系統(tǒng) 1. 介紹項目需求情況,進行設(shè)計 2. 學(xué)習(xí)設(shè)計模式(Strategy / Abstrct Factory/ Template Method) 內(nèi)容三:模式案例–某數(shù)據(jù)展示系統(tǒng) 1. 項目子系統(tǒng)背景和需求 2. 系統(tǒng)的設(shè)計思考過程 3. 展示如何用模式,進行設(shè)計 4. 學(xué)習(xí)設(shè)計模式(Strategy /Command/Template Method/ NULL Objecct /Adapter/表驅(qū)動法/Singleton ) 內(nèi)容四:模式案例–某數(shù)據(jù)分析系統(tǒng) 1. 項目子系統(tǒng)背景和需求 2. 系統(tǒng)的設(shè)計思考過程 3. 展示如何用模式,進行設(shè)計 4. 學(xué)習(xí)設(shè)計模式(Observer / Visitor/ Composite /Command/ Strategy /Adapter/Singleton ) |
第八單元 重構(gòu)到模式 內(nèi)容一:重構(gòu)到模式----錯了再改,事不過三 1. 設(shè)計壞味道概述 2. 重構(gòu)思想 3. 重構(gòu)到設(shè)計模式 4. 常見設(shè)計模式的重構(gòu)演化的過程 內(nèi)容二:案例- 網(wǎng)絡(luò)數(shù)據(jù)分析系統(tǒng)的設(shè)計 1. 介紹項目需求情況,進行設(shè)計 2. 通過重構(gòu)逐步實現(xiàn)設(shè)計模式 3. Framework 設(shè)計思想—好萊塢原則 4. 學(xué)習(xí)設(shè)計模式 5. Factory模式 6. Strategy模式 7. Decorator模式 8. Observer模式 9. 架構(gòu)模式-分層、管道過濾器模式 10. 架構(gòu)模式的重構(gòu)及演變,每步的依據(jù)及效果對比 11. 從結(jié)構(gòu)上考慮、從效率上考慮 |
第九單元 用模式去思考—對設(shè)計模式本質(zhì)的思索及探討 內(nèi)容一:模式案例- 數(shù)據(jù)文件處理系統(tǒng) 1. 項目背景介紹和前期規(guī)劃 2. 從最初的需求進行分析,到系統(tǒng)的設(shè)計,最后到編碼實現(xiàn)該案例,全程進行面向?qū)ο蟮姆治?建模,設(shè)計和最終的開發(fā)實現(xiàn). 3. 學(xué)習(xí)IOC思想在框架設(shè)計中的重要作用 4. 在案例中自然使用模式,而非生搬硬套! (Fa?ade, Strategy、Template Method 、Mediator, Simple Factory Command,模式) 5. 案例采用逐步推演的方法,針對需求的不斷變化進行設(shè)計的演變。設(shè)計靈活的系統(tǒng)框架 6. 通過案例學(xué)習(xí)怎樣才能合適應(yīng)用模式 內(nèi)容二:設(shè)計模式的本質(zhì)探討 1. 指出什么是優(yōu)秀設(shè)計和丑陋設(shè)計 2. 總結(jié)自己的模式-神似而非型似 3. 探討相似模式的本質(zhì) 4. “間接類”模式的推演及演化 5. “流程類”模式的推演及演化 6. 避免模式的誤用,討論模式的陷阱:在看似典型的場景,但不宜使用模式的場合。 內(nèi)容三:案例- 元搜索系統(tǒng)分析及設(shè)計 1. 簡單背景介紹 2. 如何面對紛繁的變化因素的組合 3. 一定要使用模式嗎——如果能很好地能抽象、隔離不同因素,也許它就是模式。 4. 討論Command模式的本質(zhì)。 內(nèi)容四:案例- 電子文件生成 1. 簡單背景介紹 2. 使用模式的第一反應(yīng),及陷入陷阱的思索 3. 具體場景使用模式的本質(zhì)討論 4. 多態(tài)的本質(zhì) 5. 討論并介紹表驅(qū)動法 6. Template Method、DIP原則Strategy模式的的靈活使用——獲得優(yōu)雅的設(shè)計 |
第十單元 大型系統(tǒng)中的模式運用 內(nèi)容一:大型系統(tǒng)的及發(fā)展及核心技術(shù) ? 應(yīng)用服務(wù)和數(shù)據(jù)服務(wù)分離 ? 使用緩存改善避免數(shù)據(jù)庫瓶頸 ? 應(yīng)用服務(wù)器集群和負載均衡避免運用服務(wù)器瓶頸 ? 數(shù)據(jù)庫讀寫分離 ? 用CDN及分布式文件系統(tǒng)加速系統(tǒng)響應(yīng) ? 分布式數(shù)據(jù)庫系統(tǒng)及NoSQL運用 ? 進行橫向的業(yè)務(wù)拆分 ? 分布式服務(wù),打造自己的軟件生態(tài)環(huán)境 內(nèi)容二:系統(tǒng)的負載均衡模式 ? HTTP 重定向負載均衡 ? DNS 域名解析負載均衡 ? 反向代理負載均衡 ? IP(NAT) 負載均衡 ? 數(shù)據(jù)鏈路層負載均衡 ? 負載均衡算法-hash一致性算法 內(nèi)容三:系統(tǒng)的緩存模式 ? 客戶端緩存策略(瀏覽器緩存、本地Navtive代碼緩存) ? 代理服務(wù)器緩存 ? CDN緩存 ? 反向代理服務(wù)器緩存 ? Memcached 分布式緩存集群的訪問模型 ? Memcached 分布式緩存集群的伸縮性方案 ? 分布式緩存的一致性Hash 算法 典型案例分析:緩存策略如何應(yīng)用在自己的實際項目中 內(nèi)容四:分布式數(shù)據(jù)存儲策略 ? 分布式文件系統(tǒng) ? 數(shù)據(jù)存儲服務(wù)器集群 ? NoSQL 數(shù)據(jù)庫 |