一、 Introduction【介紹】
設計模式:提供了一種廣泛的可重用的方式來解決我們?nèi)粘>幊讨谐3S鲆姷膯栴}蓄坏。設計模式并不一定就是一個類庫或者第三方框架曼追,它們更多的表現(xiàn)為一種思想并且廣泛地應用在系統(tǒng)中。它們也表現(xiàn)為一種模式或者模板将硝,可以在多個不同的場景下用于解決問題。設計模式可以用于加速開發(fā)屏镊,并且將很多大的想法或者設計以一種簡單地方式實現(xiàn)依疼。當然,雖然設計模式在開發(fā)中很有作用而芥,但是千萬要避免在不適當?shù)膱鼍罢`用它們律罢。
二、 Category【分類】
根據(jù)目的和范圍棍丐,設計模式可以分為五類误辑。
按照目的分為:創(chuàng)建設計模式,結構設計模式歌逢,以及行為設計模式巾钉。
按照范圍分為:類的設計模式,以及對象設計模式秘案。
1. 按照目的分砰苍,目前常見的設計模式主要有23種,根據(jù)使用目標的不同可以分為以下三大類:
創(chuàng)建設計模式(Creational Patterns)(5種):用于創(chuàng)建對象時的設計模式阱高。更具體一點赚导,初始化對象流程的設計模式。當程序日益復雜時赤惊,需要更加靈活地創(chuàng)建對象吼旧,同時減少創(chuàng)建時的依賴。而創(chuàng)建設計模式就是解決此問題的一類設計模式未舟。
單例模式【Singleton】
工廠模式【Factory】
抽象工廠模式【AbstractFactory】
建造者模式【Builder】
原型模式【Prototype】
結構設計模式(Structural Patterns)(7種):用于繼承和接口時的設計模式圈暗。結構設計模式用于新類的函數(shù)方法設計,減少不必要的類定義裕膀,減少代碼的冗余厂置。
適配器模式【Adapter】
橋接模式【Bridge】
合成模式【Composite】
裝飾器模式【Decorator】
門面模式【Facade】
代理模式【Proxy】
享元模式【Flyweight】
行為模式(Behavioral Patterns)(11種):用于方法實現(xiàn)以及對應算法的設計模式,同時也是最復雜的設計模式魂角。行為設計模式不僅僅用于定義類的函數(shù)行為昵济,同時也用于不同類之間的協(xié)議、通信。
策略模式【Strategy】
模板方法模式【TemplateMethod】
觀察者模式【Observer】
迭代器模式【Iterator】
責任鏈模式【ResponsibilityChain】
命令模式【Command】
備忘錄模式【Memento】
狀態(tài)模式【State】
訪問者模式【Visitor】
中介者模式【Mediator】
解釋器模式【Interpreter】
2.按照范圍分為:類的設計模式访忿,以及對象設計模式
類的設計模式(Class patterns):用于類的具體實現(xiàn)的設計模式瞧栗。包含了如何設計和定義類,以及父類和子類的設計模式海铆。
對象設計模式(Object patterns): 用于對象的設計模式迹恐。與類的設計模式不同,對象設計模式主要用于運行期對象的狀態(tài)改變卧斟、動態(tài)行為變更等殴边。
三、 DesignPatternsPrinciple【設計模式原則】
設計模式六大原則
開放封閉原則:一個軟件實體如類珍语、模塊和函數(shù)應該對擴展開放锤岸,對修改關閉。
里氏替換原則:所有引用基類的地方必須能透明地使用其子類的對象.
依賴倒置原則:高層模塊不應該依賴低層模塊板乙,二者都應該依賴其抽象是偷;抽象不應該依賴細節(jié);細節(jié)應該依賴抽象募逞。
單一職責原則:不要存在多于一個導致類變更的原因蛋铆。通俗的說,即一個類只負責一項職責放接。
接口隔離原則:客戶端不應該依賴它不需要的接口刺啦;一個類對另一個類的依賴應該建立在最小的接口上。
迪米特法則:一個對象應該對其他對象保持最少的了解纠脾。