1. 前言
斷斷續(xù)續(xù)寫了一段時間的設計模式筋帖,終于把經典的23種設計模式全寫完了迅耘。下面對這些設計模式總結一下贱枣。
2. 設計原則
設計原則的介紹 : 設計模式的六大原則
即使我們之前沒有專門看過這些原則,但是我們實際開發(fā)中或多或少都用到這些原則颤专。實際上纽哥,這些原則的目的只有一個:降低對象之間的耦合,增加程序的可復用性栖秕、可擴展性春塌、可維護性。優(yōu)秀的設計模式就是基于這些原則去實現的。
3. 設計模式的分類
設計模式一般分為三類:創(chuàng)建型模式只壳、結構型模式俏拱、行為型模式。
3.1 創(chuàng)建型模式
創(chuàng)建型模式簡單來說就是用來創(chuàng)建對象的吼句。一共有五種:單例模式锅必、建造者模式、工廠方法模式惕艳、抽象工廠模式搞隐、原型模式。
單例模式 :確保某一個類只有一個實例远搪,并且提供一個全局訪問點劣纲。
建造者模式 : 用來創(chuàng)建復雜的復合對象。
工廠方法模式 :讓子類來決定要創(chuàng)建哪個對象谁鳍。
抽象工廠模式 :創(chuàng)建多個產品族中的產品對象味廊。
原型模式 :通過復制原型來創(chuàng)建新對象。
3.2 行為型模式
行為型模式主要是描述類或者對象是怎樣交互和怎樣分配職責的棠耕。一共有十一種:策略模式余佛、模板方法模式、觀察者模式窍荧、迭代器模式辉巡、責任鏈模式、命令模式蕊退、備忘錄模式郊楣、狀態(tài)模式、訪問者模式瓤荔、中介者模式净蚤、解釋器模式。
策略模式 :封裝不同的算法输硝,算法之間能互相替換今瀑。
狀態(tài)模式 :根據不同的狀態(tài)做出不同的行為。
責任鏈模式 :將事件沿著鏈去處理点把。
觀察者模式 :狀態(tài)發(fā)生改變時通知觀察者橘荠,一對多的關系。
模板方法模式 :定義一套流程模板郎逃,根據需要實現模板中的操作哥童。
迭代器模式 :提供一種方法順序訪問一個聚合對象中的各個元素。
備忘錄模式 :保存對象的狀態(tài)褒翰,在需要時進行恢復贮懈。
訪問者模式 :穩(wěn)定數據結構中匀泊,定義新的操作行為。
中介者模式 :將網狀結構轉變?yōu)樾切徒Y構朵你,所有行為都通過中介各聘。
解釋器模式 :定義語法,并對其進行解釋撬呢。
命令模式 :將請求封裝成命令伦吠,并記錄下來妆兑,能夠撤銷與重做魂拦。
3.3 結構型模式
結構型模式主要是用于處理類或者對象的組合。一共有七種:適配器模式搁嗓、裝飾模式芯勘、代理模式、外觀模式腺逛、橋接模式荷愕、組合模式、享元模式棍矛。
代理模式 :控制客戶端對對象的訪問安疗。
組合模式 :將整體與局部(樹形結構)進行遞歸組合,讓客戶端能夠以一種的方式對其進行處理够委。
適配器模式 :將原來不兼容的兩個類融合在一起荐类。
裝飾者模式 :為對象添加新功能。
享元模式 :使用對象池來減少重復對象的創(chuàng)建茁帽。
外觀模式 :對外提供一個統(tǒng)一的接口用來訪問子系統(tǒng)玉罐。
橋接模式 :將兩個能夠獨立變化的部分分離開來。
4. 其他設計模式
另外潘拨,除了這23種經典的設計模式吊输,還涌現出其他的一些新的設計模式,比如:規(guī)格模式铁追、對象池模式季蚂、雇工模式、黑板模式和空對象模式等等琅束。后面有時間的話也會對這些模式進行分析癣蟋。
5.最后
雖然設計模式是個好東西,能夠給我們帶來各種好處狰闪,比如降低對象之間的耦合疯搅,增加程序的可復用性、可擴展性埋泵、可維護性等等幔欧。
但是我們也不應該濫用設計模式罪治,設計模式在一定程序上會增加系統(tǒng)的復雜性。我們在寫碼時應該評估好各方面礁蔗,避免過度設計觉义。
另外,設計模式的各種角色也不是固定不變的浴井,根據實際需要晒骇,我們可以適當的進行改動。Android的源碼在這方面的改動就比較多磺浙。
由于上面那23種經典的設計模式提出來的時間也比較久了洪囤,一些設計模式,比如解釋器模式撕氧,在我們的實際開發(fā)中基本上用不到瘤缩,了解一下就可以了。同時伦泥,隨著語言和技術的發(fā)展剥啤,有些模式可能已經過時。所以不脯,我們要緊跟時代的發(fā)展府怯。
哈哈~
相關文章閱讀
Android的設計模式-設計模式的六大原則
一句話總結23種設計模式則
創(chuàng)建型模式:
Android的設計模式-單例模式
Android的設計模式-建造者模式
Android的設計模式-工廠方法模式
Android的設計模式-簡單工廠模式
Android的設計模式-抽象工廠模式
Android的設計模式-原型模式
行為型模式:
Android的設計模式-策略模式
Android的設計模式-狀態(tài)模式
Android的設計模式-責任鏈模式
Android的設計模式-觀察者模式
Android的設計模式-模板方法模式
Android的設計模式-迭代器模式
Android的設計模式-備忘錄模式
Android的設計模式-訪問者模式
Android的設計模式-中介者模式
Android的設計模式-解釋器模式
Android的設計模式-命令模式
結構型模式:
Android的設計模式-代理模式
Android的設計模式-組合模式
Android的設計模式-適配器模式
Android的設計模式-裝飾者模式
Android的設計模式-享元模式
Android的設計模式-外觀模式
Android的設計模式-橋接模式