軟件架構(gòu)設(shè)計(jì)模式實(shí)踐與應(yīng)用
作者: 來(lái)源: 文字大小:[大][中][小]
第一單元:設(shè)計(jì)模式與面向?qū)ο蟮脑O(shè)計(jì)思想
一、面向?qū)ο笈c設(shè)計(jì)模式
1.面向?qū)ο笈c設(shè)計(jì)模式的聯(lián)系
2.面向?qū)ο蟮脑O(shè)計(jì)原則:
開(kāi)閉原則、依賴(lài)倒置原則、Liskov替換原則、單一職責(zé)原則、接口分離原則、組合復(fù)用原則、所知最少原則
案例分析:會(huì)議管理系統(tǒng)等、API函數(shù)的啟示等
3.用GRASP模式指導(dǎo)面向?qū)ο蟮脑O(shè)計(jì)
4.信息專(zhuān)家、創(chuàng)建者、高內(nèi)聚、低耦合、控制者、多態(tài)、間接、純虛構(gòu)、保護(hù)變化
案例分析:
信息專(zhuān)家、控制者、低耦合、間接模式案例分析
5.應(yīng)用GRASP模式精化架構(gòu)設(shè)計(jì)案例分析
二、UML中的常見(jiàn)疑難問(wèn)題辨析
1.類(lèi)設(shè)計(jì)
1)UML中關(guān)系的辨析:
2)依賴(lài)關(guān)系、關(guān)聯(lián)關(guān)系辨析;聚合,組合辨析。
3)類(lèi)設(shè)計(jì)中的常見(jiàn)問(wèn)題:
一些常見(jiàn)但易混淆的類(lèi)關(guān)系圖;熟悉類(lèi)的自關(guān)聯(lián)形式;使用關(guān)聯(lián)類(lèi);一些易混淆的重?cái)?shù)表示方法;建模為對(duì)象與建模為屬性 / 建模為方法與建模為對(duì)象的辨析。
2.交互圖中的常見(jiàn)問(wèn)題:
1)循環(huán)、條件、創(chuàng)建、并行的表示。
2)控制類(lèi)的地位;邊界、控制、實(shí)體類(lèi)的交互規(guī)則。
3.其它辨析
1)擴(kuò)展基類(lèi)與覆蓋基類(lèi)等;自關(guān)聯(lián)、關(guān)聯(lián)多重性、關(guān)聯(lián)角色名辨析。
2)消除多重繼承的常用手段。
第二單元:設(shè)計(jì)模式詳解
一、設(shè)計(jì)模式介紹
1.從幾個(gè)案例說(shuō)起
文件解析器:
1)文件解析器的初始設(shè)計(jì)。
2)初始設(shè)計(jì)遭遇的問(wèn)題。
3)用模式來(lái)思考。
演示控制系統(tǒng):
1)一個(gè)不錯(cuò)的演示控制系統(tǒng)。
2)功能漸強(qiáng),結(jié)構(gòu)漸亂。
3)用統(tǒng)一的方式處理問(wèn)題。
多窗口的系統(tǒng):
1)直觀的想法。
2)松耦合的實(shí)現(xiàn)。
薪酬系統(tǒng):
1)虛假的策略。
2)設(shè)計(jì)人員的功底; 抽象的重要性。
編輯器。
1)模式的困惑。
2)一切從實(shí)際出發(fā)。
2.設(shè)計(jì)模式分類(lèi)及特點(diǎn)
1)為何需要設(shè)計(jì)模式;設(shè)計(jì)模式在軟件設(shè)計(jì)中所處的層級(jí)及階段。
2)設(shè)計(jì)模式的特點(diǎn)。
3)設(shè)計(jì)模式的幾種分類(lèi)。
4)設(shè)計(jì)模式的意圖及考慮問(wèn)題的基本思想。
5)設(shè)計(jì)模式的優(yōu)點(diǎn)及不足。
二、組織接口型模式:
1.接口的意義。
2.適配器模式。Adapter
1)適配器模式介紹。
2)容易被忽略的情況:關(guān)于接口的修改。
例:文件解析器系統(tǒng)的接口設(shè)計(jì)。
3.適配器總結(jié)。
4.外觀模式。
1)令人望而生畏的API函數(shù)。
2)外觀模式的作用。
3)容易被忽略的外觀。
例:文件解析器系統(tǒng)的外觀設(shè)計(jì)。
5.外觀模式與適配器的辨析。
6.中介者模式
1)中介者模式的使用場(chǎng)景。
2)中介者模式在架構(gòu)中的重要地位。
3)中介者模式與控制者。
三、創(chuàng)建型模式
1.單例模式。
1)單例模式的意義。
2)多線程中的問(wèn)題。
例:引入單例模式。
2.工廠模式
1)工廠模式的使用場(chǎng)景。
2)工廠模式與反射。
例:引入工廠模式。
3.抽象工廠模式
1)創(chuàng)建不同對(duì)象的多個(gè)系列產(chǎn)品。
2)工廠模式與抽象工廠模式的區(qū)別。
例:引入抽象工廠模式。
4.構(gòu)造者模式
1)構(gòu)造者模式的應(yīng)用場(chǎng)景。
2)構(gòu)造者模式中的控制者。
5.原型模式
1)作為工廠的原型
2)利用克隆進(jìn)行原型
3)
四、擴(kuò)展型模式
1.功能與邏輯的關(guān)系
1)功能模塊的設(shè)計(jì)要點(diǎn)。
2)邏輯模塊的設(shè)計(jì)要點(diǎn)。
3)系統(tǒng)穩(wěn)定及可擴(kuò)展的秘訣。
2.模板方法模式
1)部分的多態(tài)。
2)模板方法模式的使用場(chǎng)合。
3)模板方法模式與IOC。
例:文件解析器中的模板方法模式。
3.策略模式
1)繼承與組合的辨析。
2)多態(tài)的經(jīng)典使用。
3)無(wú)處不在的策略模式。
例:運(yùn)輸系統(tǒng);在多窗口系統(tǒng)中引入策略模式。
4.橋接模式
1)從“類(lèi)爆炸”說(shuō)起。
2)復(fù)雜多對(duì)多的處理。
3)僅針對(duì)接口編程是不夠的。
4)橋接模式的要點(diǎn):抽象類(lèi)行為的具體實(shí)現(xiàn)中有重復(fù)的方法。
5)從橋接模式到面向?qū)ο蟮恼`區(qū)。
例:在文件解析器中引入橋接模式。
5.狀態(tài)模式
1)狀態(tài)模式的本質(zhì):類(lèi)狀態(tài)機(jī)。
2)狀態(tài)模式的前提條件:經(jīng)常發(fā)生改變的是狀態(tài)(業(yè)務(wù)流程),而非對(duì)應(yīng)的處理。
3)狀態(tài)模式使用。
4)狀態(tài)模式與表驅(qū)動(dòng)法。
5)
6.策略、橋接、狀態(tài)、模板方法模式的辨析。
7.裝飾模式
1)裝飾模式的使用場(chǎng)合。
2)裝飾模式的要點(diǎn)。
3)Java中的裝飾模式。
例:裝飾模式在打印中的使用。
8.代理模式
1)代理模式的使用場(chǎng)合。
2)代理模式的要點(diǎn)。
3)代理模式與AOP
9.訪問(wèn)者模式
1)訪問(wèn)者模式的使用場(chǎng)合。
2)雙重分發(fā)機(jī)制。
3)與橋接模式的比較。
例:在演示控制系統(tǒng)中引入橋接模式。
10.責(zé)任鏈模式
1)責(zé)任鏈模式的使用場(chǎng)合。
2)責(zé)任鏈模式的要點(diǎn)。
3)消息路由與責(zé)任鏈模式。
11.組合模式
1)組合模式的使用場(chǎng)合。
2)組合模式的使用要點(diǎn)。
例:組合模式在表單統(tǒng)計(jì)中的使用。
五、操作型模式
1.命令模式
1)命令模式的特點(diǎn)、優(yōu)點(diǎn)及缺點(diǎn)。
2)命令模式的典型使用場(chǎng)合。
例:在客戶端與服務(wù)器端傳遞命令。
例:在元搜索系統(tǒng)中使用命令模式。
2.觀察者模式
1)觀察者模式的使用場(chǎng)景。
2)觀察者模式與MVC。
3)觀察者模式使用中變體。
例:用觀察者模式解決多窗口系統(tǒng)的聯(lián)動(dòng)問(wèn)題。
3.享元模式
1)享元模式的使用場(chǎng)景。
2)內(nèi)存管理:存根(stub)與享元模式。
4.備忘錄模式
1)備忘錄的使用場(chǎng)景。
5.迭代器模式
1)Java、stl、c#中的迭代器實(shí)例。
例:構(gòu)造統(tǒng)一的樹(shù)狀結(jié)構(gòu)迭代。
6.解析器模式:
1)解析器模式的使用場(chǎng)合。
第三單元:設(shè)計(jì)模式本質(zhì)論
一、關(guān)于功能與邏輯的分離。
1.隔離關(guān)注面。
2.軟件架構(gòu)設(shè)計(jì)的思考。
3.單向依賴(lài)與雙向依賴(lài)。
4.強(qiáng)依賴(lài)與弱依賴(lài)。
5.面向?qū)ο蟮恼`會(huì)。
6.領(lǐng)域模型。
7.DIP、DI和IOC。
8.分離、分離,還是分離!
9.橋接、策略、狀態(tài)、訪問(wèn)者、模板方法模式。
二、關(guān)于間接。
1.間接在軟件設(shè)計(jì)中的地位。
2.變形記。
3.接口在間接中的地位。
4.掌握好度。
5.間接、間接、還是間接!
6.實(shí)際項(xiàng)目運(yùn)用中的折衷。
三、關(guān)于動(dòng)態(tài)對(duì)象。
1.一個(gè)有爭(zhēng)議的建模例子。
2.你真正理解什么是對(duì)象嗎?
3.善于構(gòu)建動(dòng)態(tài)對(duì)象。
4.其它的小對(duì)象。
四、關(guān)于常用模式的組合。
1.用中介者模式作為中控。
2.用橋接/ 策略模式作為情況分支處理。
3.用狀態(tài)模式進(jìn)行事件分發(fā)。
4.用命令模式處理復(fù)雜的操作。
5.用訪問(wèn)者模式、裝飾模式、組合模式統(tǒng)一流程。
6.用工廠/ 抽象工廠模式進(jìn)行創(chuàng)建組配。
7.用單例模式簡(jiǎn)化傳輸,構(gòu)建無(wú)狀態(tài)對(duì)象。
8.用模板方法模式處理小流程。
9.用觀察者模式實(shí)現(xiàn)聯(lián)動(dòng)和消息相應(yīng)。
10.用狀態(tài)模式實(shí)現(xiàn)控制中樞。
五、關(guān)于模式的誤用。
1.以業(yè)務(wù)為邊界。
2.不用模式的正當(dāng)理由。
3.不可避免的類(lèi)爆炸。
4.子類(lèi)復(fù)子類(lèi),子類(lèi)何其多。
5.理解模式的本質(zhì),而非背誦形式。
6.高手的選擇。
第五單元:設(shè)計(jì)模式綜合練習(xí)
一、設(shè)計(jì)模式綜案例。
1.網(wǎng)絡(luò)數(shù)據(jù)采集分析系統(tǒng)。
2.基于網(wǎng)絡(luò)元搜索的系統(tǒng)。
3.企業(yè)薪酬管理系統(tǒng)。
4.會(huì)議管理系統(tǒng)。
5.文件解析系統(tǒng)。
6.圖像處理系統(tǒng)。
7.Devs文件編輯器系統(tǒng)。