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