開(kāi)發(fā) - 23種設(shè)計(jì)模式 - Android版

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ū)

其它
掘金-設(shè)計(jì)模式-收藏集

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末熬甚,一起剝皮案震驚了整個(gè)濱河市逢渔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌乡括,老刑警劉巖肃廓,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件智厌,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡盲赊,警方通過(guò)查閱死者的電腦和手機(jī)铣鹏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)角钩,“玉大人吝沫,你說(shuō)我怎么就攤上這事〉堇瘢” “怎么了惨险?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)脊髓。 經(jīng)常有香客問(wèn)我辫愉,道長(zhǎng),這世上最難降的妖魔是什么将硝? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任恭朗,我火速辦了婚禮,結(jié)果婚禮上依疼,老公的妹妹穿的比我還像新娘痰腮。我一直安慰自己,他們只是感情好律罢,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布膀值。 她就那樣靜靜地躺著,像睡著了一般误辑。 火紅的嫁衣襯著肌膚如雪沧踏。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,792評(píng)論 1 290
  • 那天巾钉,我揣著相機(jī)與錄音翘狱,去河邊找鬼。 笑死砰苍,一個(gè)胖子當(dāng)著我的面吹牛潦匈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播赚导,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼历等,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了辟癌?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤荐捻,失蹤者是張志新(化名)和其女友劉穎黍少,沒(méi)想到半個(gè)月后寡夹,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡厂置,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年菩掏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昵济。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡智绸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出访忿,到底是詐尸還是另有隱情瞧栗,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布海铆,位于F島的核電站迹恐,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏卧斟。R本人自食惡果不足惜殴边,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望珍语。 院中可真熱鬧锤岸,春花似錦、人聲如沸板乙。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)亡驰。三九已至晓猛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間凡辱,已是汗流浹背戒职。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留透乾,地道東北人洪燥。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像乳乌,于是被迫代替她去往敵國(guó)和親捧韵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容