常见设计模式说明
簡單工廠模式:需要在工廠類中做判斷,從而創(chuàng)造相應(yīng)的產(chǎn)品。當(dāng)增加新的產(chǎn)品時(shí),就需要修改工廠類,但這違反了開放封閉原則(可以擴(kuò)展,但是不可以修改)
工廠方法模式:是指定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類決定實(shí)例化哪一個(gè)類。該方法使一個(gè)類的實(shí)例化延遲到其子類。缺點(diǎn)是:每增加一種產(chǎn)品,就需要增加一個(gè)對(duì)象的工廠,這就需要更多的類定義
抽象工廠模式:提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無需指定它們具體的類
策略模式:定義一系列算法,把它們一個(gè)個(gè)封裝起來,并且使它們可相互替換。本模式使得算法可獨(dú)立于使用它的客戶而變化。也就是說這些算法所完成的功能一樣,對(duì)外接口一樣,只是各自實(shí)現(xiàn)上存在差異。用策略模式封裝算法,效果比較好
裝飾模式:動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的職責(zé),提供了更加靈活的向?qū)ο筇砑勇氊?zé)的方式。可以用添加和分離的方法,用裝飾在運(yùn)行時(shí)刻增加和刪除職責(zé)。裝飾模式提供了一種“即用即付”的方法來添加職責(zé)。它并不試圖在一個(gè)復(fù)雜的可定制的類中支持所有可預(yù)見的特征,相反,你可以定義一個(gè)簡單的類,并且用裝飾類給它逐漸地添加功能。可以從簡單的部件組合出復(fù)雜的功能
代理模式:為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。有四種常用的情況:(1)遠(yuǎn)程代理,(2)虛代理,(3)保護(hù)代理,(4)智能引用
原型模式:指定創(chuàng)建對(duì)象的種類,并且通過拷貝這些原型創(chuàng)建新的對(duì)象,拷貝是原型模式的精髓所在
模板方法模式:定義一個(gè)操作中的算法骨架,而將一些步驟延到子類中。模板方法使得子類可以不改變一個(gè)算法的結(jié)構(gòu)即可以重定義該算法的某些特定步驟
外觀模式:當(dāng)一個(gè)系統(tǒng)很復(fù)雜時(shí),系統(tǒng)提供給客戶的是一個(gè)簡單的對(duì)外接口,而把里面復(fù)雜的結(jié)構(gòu)都封裝了起來。客戶只需使用這些簡單接口就能使用這個(gè)系統(tǒng),而不需要關(guān)注內(nèi)部復(fù)雜的結(jié)構(gòu)。為子系統(tǒng)中的一組接口提供一個(gè)一致的界面, 外觀模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用
組合模式:將對(duì)象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。組合使得用戶對(duì)單個(gè)對(duì)象和組合對(duì)象的使用具有一致性
建造者模式:將一個(gè)復(fù)雜對(duì)象的【構(gòu)建】與它的【表示】分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。建造者模式是在導(dǎo)向者的控制下一步一步構(gòu)造產(chǎn)品的。建造者模式可以能更精細(xì)的控制構(gòu)建過程,從而能更精細(xì)的控制所得產(chǎn)品的內(nèi)部結(jié)構(gòu)
觀察者模式:定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并被自動(dòng)更新。它還有兩個(gè)別名,依賴,發(fā)布-訂閱
狀態(tài)模式:允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為。對(duì)象看起來似乎修改了它的類。它有兩種使用情況:(1)一個(gè)對(duì)象的行為取決于它的狀態(tài), 并且它必須在運(yùn)行時(shí)刻根據(jù)狀態(tài)改變它的行為。(2)一個(gè)操作中含有龐大的多分支的條件語句,且這些分支依賴于該對(duì)象的狀態(tài)
適配器模式:將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口,使得原本由于接口不兼容而不能一起工作的那些類可以一起工作
備忘錄模式:在不破壞封裝性的前提下,捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài)。這樣以后就可將該對(duì)象恢復(fù)到原先保存的狀態(tài)
橋接模式:將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化
職責(zé)鏈模式:使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,從而避免請(qǐng)求的發(fā)送者和接收者之間的耦合關(guān)系。將這些對(duì)象連成一條鏈,并沿著這條鏈傳遞該請(qǐng)求,直到有一個(gè)對(duì)象處理它為止
中介者模式:用一個(gè)中介對(duì)象來封裝一系列的對(duì)象交互。中介者使各對(duì)象不需要顯式地相互引用,從而使其耦合松散,而且可以獨(dú)立地改變它們之間的交互
享元模式:運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象,內(nèi)在的屬性是可以共享的,區(qū)分在于外在屬性。
總結(jié)
- 上一篇: IO消耗和处理器消耗
- 下一篇: 分布式基础理论