設計模式總結

本文轉載自git

http://www.mynawang.com/

相關代碼可訪問github

https://github.com/mynawang/Design-Pattern-Learning

 

什麼是設計模式

設計模式(Design pattern)是一套被反覆使用、多數人知曉的、通過分類編目的、代碼設計經驗的總結。使用設計模式是爲了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。
 

設計模式的6個原則

一、迪米特法原則(Demeter Principle)
迪米特法原則又稱爲最少知道原則,也就是說,一個實體應當儘可能少的與其餘實體之間發生相互做用,使得系統功能模塊相對獨立。也就是咱們日常所說的」高內聚,低耦合」。
二、單一職責原則(Single Responsibility Principle)
就一個類而言,應該僅有一個引發它變化的緣由。簡而言之,就是功能要單一,一個類只負責一項職責。
三、接口隔離原則(Interface Segregation Principle)
使用多個專門的接口,而不使用單一的總接口,即客戶端不該該依賴那些它不須要的接口。
四、里氏替換原則(Liskov Substitution Principle)
全部引用基類(父類)的地方必須能透明地使用其子類的對象。即繼承於派生的規則。
五、依賴倒置原則(Dependence Inversion Principle)
高層模塊不該該依賴低層模塊,兩者都應該依賴其抽象;抽象不該該依賴於細節,細節應當依賴於抽象。換言之,要針對接口編程,而不是針對實現編程。
六、開閉原則(Open-Closed Principle)
一個軟件實體如類、模塊和函數應該對擴展開放,對修改關閉。即軟件實體應儘可能在不修改原有代碼的狀況下進行擴展。
 

設計模式分類

建立型模式
一、抽象工廠模式(Abstract Factory Pattern)
提供一個接口, 用於建立相關或依賴對象的家族, 而不須要指定具體類。
二、工廠方法模式(Factory Method Pattern)
定義了一個建立對象的接口,但由子類決定要實例化的類是哪個。工廠方法讓類把實例化推遲到子類。
三、建造者模式(Builder Pattern)
將一個複雜對象的構建與它的表示分離,使得一樣的構建過程能夠建立不一樣的表示。
四、單例模式(Singleton Pattern)
確保一個類只有一個實例,並且自行實例化並向整個系統提供這個實例。
五、原型模式(Prototype Pattern)
用原型實例指定建立對象的種類,並經過拷貝這些原型建立新的對象。
結構型模式
一、適配器模式(Adapter Pattern)
是做爲兩個不兼容的接口之間的橋樑。它結合了兩個獨立接口的功能。
二、裝飾器模式(Decorator Pattern)
容許向一個現有的對象添加新的功能,同時又不改變其結構。它是做爲現有的類的一個包裝。
三、代理模式(Proxy Pattern)
一個類表明另外一個類的功能。建立具備現有對象的對象,以便向外界提供功能接口。
四、橋接模式(Bridge Pattern)
用於把抽象化與實現化解耦,使得兩者能夠獨立變化。經過提供抽象化和實現化之間的橋接結構,來實現兩者的解耦。
五、外觀模式(Facade Pattern)
隱藏系統的複雜性,並向客戶端提供了一個客戶端能夠訪問系統的接口。向現有的系統添加一個接口,來隱藏系統的複雜性。
六、享元模式(Flyweight Pattern)
主要用於減小建立對象的數量,以減小內存佔用和提升性能。經過共享技術實現相同或類似對象的重用。
七、組合模式(Composite Pattern)
又叫部分-總體模式,是用於把一組類似的對象看成一個單一的對象。將對象組織到樹結構中,能夠用來描述總體與部分的關係。
行爲型模式
一、模板方法模式(Template Method Pattern)
一個抽象類公開定義了執行它的方法的方式/模板。它的子類能夠按須要重寫方法實現,但調用將以抽象類中定義的方式進行。
二、備忘錄模式(Memento Pattern)
保存一個對象的某個狀態,以便在適當的時候恢復對象。
三、迭代子模式(Iterator Pattern)
用於順序訪問集合對象的元素,不須要知道集合對象的底層表示。
四、訪問者模式(Visitor Pattern)
表示一個做用於某對象結構中的各元素的操做,它使咱們能夠在不改變各元素的類的前提下定義做用於這些元素的新操做。
五、觀察者模式(Observer Pattern)
定義對象間的一種一對多依賴關係,使得每當一個對象狀態發生改變時,其相關依賴對象皆獲得通知並被自動更新。
六、解釋器模式(Interpreter Pattern)
定義語言的文法,而且創建一個解釋器來解釋該語言中的句子,這裏的「語言」意思是使用規定格式和語法的代碼。
七、中介者模式(Mediator Pattern)
用一箇中介對象來封裝一系列的對象交互,中介者使各對象不須要顯式地相互引用,從而使其耦合鬆散,並且能夠獨立地改變它們之間的交互。中介者模式又稱爲調停者模式。
八、責任鏈模式(Chain of Responsibility Pattern)
避免請求發送者與接收者耦合在一塊兒,讓多個對象都有可能接收請求,將這些對象鏈接成一條鏈,而且沿着這條鏈傳遞請求,直到有對象處理它爲止。
九、策略模式(Strategy Pattern)
定義一系列算法,將每個算法封裝起來,並讓它們能夠相互替換。策略模式讓算法獨立於使用它的客戶而變化。
十、命令模式(Command Pattern)
將一個請求封裝爲一個對象,從而使咱們可用不一樣的請求對客戶進行參數化;對請求排隊或者記錄請求日誌,以及支持可撤銷的操做。
十一、狀態模式(State Pattern)
容許一個對象在其內部狀態改變時改變它的行爲,對象看起來彷佛修改了它的類。
 
 
 
博主自白

    本人20有餘,天資愚鈍,深信勤能補拙。酷愛編程,愛鑽研,廣交碼友,耕於三線,日以繼夜而使飛燕之身蛻變爲大腹便便。web


有志之士點擊連接加入技術交流羣【專一的程序猿】282087535算法


    文章若是對你有所幫助是個人榮幸,不妥之處但願指正,轉帖請註明本文出自鈺火的小棧(http://www.mynawang.com/),請尊重他人的辛勤勞動成果,謝謝!編程

相關文章
相關標籤/搜索