一、 Introduction【介紹】
設計模式:提供了一種廣泛的可重用的方式來解決我們日常編程中常常遇見的問題。設計模式並不一定就是一個類庫或者第三方框架,它們更多的表現為一種思想並且廣泛地應用在系統中。它們也表現為一種模式或者模板,可以在多個不同的場景下用於解決問題。設計模式可以用於加速開發,並且將很多大的想法或者設計以一種簡單地方式實現。當然,雖然設計模式在開發中很有作用,但是千萬要避免在不適當的場景誤用它們。
二、 Category【分類】
根據目的和范圍,設計模式可以分為五類。
按照目的分為:創建設計模式,結構設計模式,以及行為設計模式。
按照范圍分為:類的設計模式,以及對象設計模式。
1. 按照目的分,目前常見的設計模式主要有23種,根據使用目標的不同可以分為以下三大類:
-
創建設計模式(Creational Patterns)(5種):用於創建對象時的設計模式。更具體一點,初始化對象流程的設計模式。當程序日益復雜時,需要更加靈活地創建對象,同時減少創建時的依賴。而創建設計模式就是解決此問題的一類設計模式。
-
結構設計模式(Structural Patterns)(7種):用於繼承和接口時的設計模式。結構設計模式用於新類的函數方法設計,減少不必要的類定義,減少代碼的冗余。
-
行為模式(Behavioral Patterns)(11種):用於方法實現以及對應算法的設計模式,同時也是最復雜的設計模式。行為設計模式不僅僅用於定義類的函數行為,同時也用於不同類之間的協議、通信。
2.按照范圍分為:類的設計模式,以及對象設計模式
-
類的設計模式(Class patterns):用於類的具體實現的設計模式。包含了如何設計和定義類,以及父類和子類的設計模式。
-
對象設計模式(Object patterns): 用於對象的設計模式。與類的設計模式不同,對象設計模式主要用於運行期對象的狀態改變、動態行為變更等。
三、 DesignPatternsPrinciple【設計模式原則】
設計模式六大原則
- 開放封閉原則:一個軟件實體如類、模塊和函數應該對擴展開放,對修改關閉。
- 里氏替換原則:所有引用基類的地方必須能透明地使用其子類的對象.
- 依賴倒置原則:高層模塊不應該依賴低層模塊,二者都應該依賴其抽象;抽象不應該依賴細節;細節應該依賴抽象。
- 單一職責原則:不要存在多於一個導致類變更的原因。通俗的說,即一個類只負責一項職責。
- 接口隔離原則:客戶端不應該依賴它不需要的接口;一個類對另一個類的依賴應該建立在最小的接口上。
- 迪米特法則:一個對象應該對其他對象保持最少的了解。