設計模式這部分內容其實比較繁雜,自己這部分的知識也不是不太牢固,自己通過看視頻及看書等其他的途徑,對這部分內容有了自己的理解,在這裡做個記錄。這個作為開篇,不會介紹具體的模式,本文主要介紹設計模式的一些理論的知識。
七大基本原則
- 單一職責原則
Single-Responsibilitiy Principle(SRP):對一個類而言,應該僅有一個引起它變化的原因。如果存在多於一個動機去改變一個類,那麼這個類就具有多於一個的職責,就應該把多餘的職責分離出去,再去創建一些類來完成每一個職責。
- 開閉原則
Open-Close Principle(OCP):一個軟體實體如類、模塊和函數應該對擴展開放,對修改關閉。目的就是保證程序的擴展性好,易於維護和升級。**開閉原則是設計模式最重要的原則**。優美的代碼不僅實現了功能,更重要的是拓展性,這是一個優秀的coder最重要的素質。
- 迪米特法則
Law of Demeter : 一個對象應該對其他對象有最少的了解,又稱最少知道原則。主要是降低類之間的耦合。
- 接口隔離原則
Interface Segregation Principle(ISP):客戶端不應該依賴它不需要的接口,一個類對另一個類的依賴應該建立在最小的接口上。我的理解是如果定義了一個很多方法的接口,許多的類都依賴這個接口,而且這些類中不需要實現所有的方法時,依據接口隔離原則,我們就需要將這個接口分拆為多個小接口,減少依賴。
- 里氏替換原則
Liskov Substitution Principle(LSP):所有引用基類的地方必須能透明地使用其子類的對象。子類應該不覆蓋父類的非抽象方法,如果子類需要添加新的行為,應該定義新的方法。
- 依賴倒置原則
Dependence Inversion Principle(DIP): 抽象不應該依賴於細節,細節應當依賴於抽象。換言之,要針對接口編程,而非針對實現編程。這個其實就是面向對象與面向過程編程的最大的不同,正是藉助接口的抽象特性,實現了功能的拓展性。
- 合成復用原則
Composite Reuse Principle (CRP):要求在軟體復用時,要儘量先使用組合或者聚合等關聯關係來實現,其次才考慮使用繼承關係來實現。因為繼承其實破環了類的封裝性,增加類之間的耦合,使得類的復用性降低。
設計模式的分類
在常用的23中設計模式中,可以分為三大類。一圖勝千言,具體請看下圖。
- 創建型模式
- 結構型模式
- 行為型模式
總結
本文主要介紹的是,設計模式的設計原則和整體分類,通常這些不太受到開發人員的重視,但是不代表這些不重要,特別是七大設計原則是設計模式的目的與出發點,需要時刻謹記。