1. 前言
斷斷續(xù)續(xù)寫(xiě)了一段時(shí)間的設(shè)計(jì)模式,終于把經(jīng)典的23種設(shè)計(jì)模式全寫(xiě)完了。下面對(duì)這些設(shè)計(jì)模式總結(jié)一下护侮。
2. 設(shè)計(jì)原則
設(shè)計(jì)原則的介紹 : 設(shè)計(jì)模式的六大原則
即使我們之前沒(méi)有專(zhuān)門(mén)看過(guò)這些原則,但是我們實(shí)際開(kāi)發(fā)中或多或少都用到這些原則。實(shí)際上属愤,這些原則的目的只有一個(gè):降低對(duì)象之間的耦合,增加程序的可復(fù)用性酸役、可擴(kuò)展性住诸、可維護(hù)性。優(yōu)秀的設(shè)計(jì)模式就是基于這些原則去實(shí)現(xiàn)的涣澡。
3. 設(shè)計(jì)模式的分類(lèi)
設(shè)計(jì)模式一般分為三類(lèi):創(chuàng)建型模式贱呐、結(jié)構(gòu)型模式、行為型模式入桂。
3.1 創(chuàng)建型模式
創(chuàng)建型模式簡(jiǎn)單來(lái)說(shuō)就是用來(lái)創(chuàng)建對(duì)象的奄薇。一共有五種:?jiǎn)卫J健⒔ㄔ煺吣J娇钩睢⒐S方法模式馁蒂、抽象工廠模式、原型模式蜘腌。
單例模式 :確保某一個(gè)類(lèi)只有一個(gè)實(shí)例沫屡,并且提供一個(gè)全局訪問(wèn)點(diǎn)。
建造者模式 : 用來(lái)創(chuàng)建復(fù)雜的復(fù)合對(duì)象撮珠。
工廠方法模式 :讓子類(lèi)來(lái)決定要?jiǎng)?chuàng)建哪個(gè)對(duì)象沮脖。
抽象工廠模式 :創(chuàng)建多個(gè)產(chǎn)品族中的產(chǎn)品對(duì)象。
原型模式 :通過(guò)復(fù)制原型來(lái)創(chuàng)建新對(duì)象芯急。
3.2 行為型模式
行為型模式主要是描述類(lèi)或者對(duì)象是怎樣交互和怎樣分配職責(zé)的勺届。一共有十一種:策略模式、模板方法模式娶耍、觀察者模式免姿、迭代器模式、責(zé)任鏈模式伺绽、命令模式养泡、備忘錄模式嗜湃、狀態(tài)模式、訪問(wèn)者模式澜掩、中介者模式购披、解釋器模式。
策略模式 :封裝不同的算法肩榕,算法之間能互相替換刚陡。
狀態(tài)模式 :根據(jù)不同的狀態(tài)做出不同的行為。
責(zé)任鏈模式 :將事件沿著鏈去處理株汉。
觀察者模式 :狀態(tài)發(fā)生改變時(shí)通知觀察者筐乳,一對(duì)多的關(guān)系。
模板方法模式 :定義一套流程模板乔妈,根據(jù)需要實(shí)現(xiàn)模板中的操作蝙云。
迭代器模式 :提供一種方法順序訪問(wèn)一個(gè)聚合對(duì)象中的各個(gè)元素。
備忘錄模式 :保存對(duì)象的狀態(tài)路召,在需要時(shí)進(jìn)行恢復(fù)勃刨。
訪問(wèn)者模式 :穩(wěn)定數(shù)據(jù)結(jié)構(gòu)中,定義新的操作行為股淡。
中介者模式 :將網(wǎng)狀結(jié)構(gòu)轉(zhuǎn)變?yōu)樾切徒Y(jié)構(gòu)身隐,所有行為都通過(guò)中介。
解釋器模式 :定義語(yǔ)法唯灵,并對(duì)其進(jìn)行解釋贾铝。
命令模式 :將請(qǐng)求封裝成命令,并記錄下來(lái)埠帕,能夠撤銷(xiāo)與重做垢揩。
3.3 結(jié)構(gòu)型模式
結(jié)構(gòu)型模式主要是用于處理類(lèi)或者對(duì)象的組合。一共有七種:適配器模式敛瓷、裝飾模式水孩、代理模式、外觀模式琐驴、橋接模式、組合模式秤标、享元模式绝淡。
代理模式 :控制客戶端對(duì)對(duì)象的訪問(wèn)。
組合模式 :將整體與局部(樹(shù)形結(jié)構(gòu))進(jìn)行遞歸組合苍姜,讓客戶端能夠以一種的方式對(duì)其進(jìn)行處理牢酵。
適配器模式 :將原來(lái)不兼容的兩個(gè)類(lèi)融合在一起。
裝飾者模式 :為對(duì)象添加新功能衙猪。
享元模式 :使用對(duì)象池來(lái)減少重復(fù)對(duì)象的創(chuàng)建馍乙。
外觀模式 :對(duì)外提供一個(gè)統(tǒng)一的接口用來(lái)訪問(wèn)子系統(tǒng)布近。
橋接模式 :將兩個(gè)能夠獨(dú)立變化的部分分離開(kāi)來(lái)。
4. 其他設(shè)計(jì)模式
另外丝格,除了這23種經(jīng)典的設(shè)計(jì)模式撑瞧,還涌現(xiàn)出其他的一些新的設(shè)計(jì)模式,比如:規(guī)格模式显蝌、對(duì)象池模式预伺、雇工模式、黑板模式和空對(duì)象模式等等曼尊。后面有時(shí)間的話也會(huì)對(duì)這些模式進(jìn)行分析酬诀。
5.最后
雖然設(shè)計(jì)模式是個(gè)好東西,能夠給我們帶來(lái)各種好處骆撇,比如降低對(duì)象之間的耦合瞒御,增加程序的可復(fù)用性、可擴(kuò)展性神郊、可維護(hù)性等等肴裙。
但是我們也不應(yīng)該濫用設(shè)計(jì)模式,設(shè)計(jì)模式在一定程序上會(huì)增加系統(tǒng)的復(fù)雜性屿岂。我們?cè)趯?xiě)碼時(shí)應(yīng)該評(píng)估好各方面践宴,避免過(guò)度設(shè)計(jì)。
另外爷怀,設(shè)計(jì)模式的各種角色也不是固定不變的阻肩,根據(jù)實(shí)際需要,我們可以適當(dāng)?shù)倪M(jìn)行改動(dòng)运授。Android的源碼在這方面的改動(dòng)就比較多烤惊。
由于上面那23種經(jīng)典的設(shè)計(jì)模式提出來(lái)的時(shí)間也比較久了,一些設(shè)計(jì)模式吁朦,比如解釋器模式柒室,在我們的實(shí)際開(kāi)發(fā)中基本上用不到,了解一下就可以了逗宜。同時(shí)雄右,隨著語(yǔ)言和技術(shù)的發(fā)展,有些模式可能已經(jīng)過(guò)時(shí)纺讲。所以擂仍,我們要緊跟時(shí)代的發(fā)展。
哈哈~
相關(guān)文章閱讀
Android的設(shè)計(jì)模式-設(shè)計(jì)模式的六大原則
一句話總結(jié)23種設(shè)計(jì)模式則
創(chuàng)建型模式:
Android的設(shè)計(jì)模式-單例模式
Android的設(shè)計(jì)模式-建造者模式
Android的設(shè)計(jì)模式-工廠方法模式
Android的設(shè)計(jì)模式-簡(jiǎn)單工廠模式
Android的設(shè)計(jì)模式-抽象工廠模式
Android的設(shè)計(jì)模式-原型模式
行為型模式:
Android的設(shè)計(jì)模式-策略模式
Android的設(shè)計(jì)模式-狀態(tài)模式
Android的設(shè)計(jì)模式-責(zé)任鏈模式
Android的設(shè)計(jì)模式-觀察者模式
Android的設(shè)計(jì)模式-模板方法模式
Android的設(shè)計(jì)模式-迭代器模式
Android的設(shè)計(jì)模式-備忘錄模式
Android的設(shè)計(jì)模式-訪問(wèn)者模式
Android的設(shè)計(jì)模式-中介者模式
Android的設(shè)計(jì)模式-解釋器模式
Android的設(shè)計(jì)模式-命令模式
結(jié)構(gòu)型模式:
Android的設(shè)計(jì)模式-代理模式
Android的設(shè)計(jì)模式-組合模式
Android的設(shè)計(jì)模式-適配器模式
Android的設(shè)計(jì)模式-裝飾者模式
Android的設(shè)計(jì)模式-享元模式
Android的設(shè)計(jì)模式-外觀模式
Android的設(shè)計(jì)模式-橋接模式
作者:四月葡萄
來(lái)源:簡(jiǎn)書(shū)