設計模式(Design pattern)是一套被反覆使用、多數人知曉的、通過分類編目的、代碼設計經驗的總結。使用設計模式是爲了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。算法
設計模式的三種模型:設計模式
建立型模式:單例模式、抽象工廠模式、建造者模式、工廠模式、原型模式。
安全
結構型模式:適配器模式、橋接模式、裝飾模式、組合模式、外觀模式、享元模式、代理模式。框架
行爲型模式:模版方法模式、命令模式、迭代器模式、觀察者模式、中介者模式、備忘錄模式、解釋器模式、狀態模式、策略模式、職責鏈模式、訪問者模式。工具
幾種經常使用的設計模式介紹:spa
1、工廠方法模式(Factory Method)設計
工廠模式專門負責將大量有共同接口的類實例化,工廠模式能夠動態決定將哪個類實例化,沒必要事先知道要實例化那一個類。代理
工廠模式的幾種形態:htm
2、代理模式對象
定義:對其餘對象提供一種代理以控制對這個對象的訪問。
做用:使用代理模式建立代理對象,讓代理對象控制目標對象的訪問(目標對象能夠是遠程的對象、建立開銷大的對象或須要安全控制的對象),而且能夠在不改變目標對象的狀況下添加一些額外的功能。
思想:提供額外的處理或者不一樣的操做而在實際對象與調用者之間插入一個代理對象。真實對象很乾淨,代理對象代理真實對象須要作的事情,而且加入了一些輔助的事情。
應用:就是採用一個代理類調用原有的方法,且對產生的結果進行控制。
3、Templete模式
對於某個邏輯實現(算法實現)在不一樣的對象中有不一樣的細節實現,可是框架是相同的,Templete模式是採用繼承的方式來實現這一點,將框架放到基類中,定義好細節的接口,子類中實現具體的細節。相似於HOOK。說白了:父類TempleteMethod方法調用Primitive1和Primitive2,可是在子類中實現Primitive1和Primitive2。
Template模式得到一種反向控制結構效果,這也是面向對象系統的分析和設計中一個原則DIP(依賴倒置:Dependency Inversion Principles)。其含義就是父類調用子類的操做(高層模塊調用低層模塊的操做),低層模塊實現高層模塊聲明的接口。這樣控制權在父類(高層模塊),低層模塊反而要依賴高層模塊。