設計模式之六大原則與抽象

lazy_boy發表於2018-01-11

抽象

抽象是為了某種目的,對一個概念或一種現象包含的資訊進行過濾,移除不相關的資訊,只保留最終與目的相關的資訊。比如:"一個紙杯",我們可以過濾掉質料相關的資訊,得到一個更一般且通用的概念,也就是"杯子"。從另外一個角度看,抽象就是簡化事物,抓住事物本質的過程。

需要注意的是抽象是分層次的,以下是對一本書不同層次的抽象:

  1. 1月8號,讀《設計模式》
  2. 讀《設計模式》
  3. 《設計模式》
  4. 出版品

可以看到,在不同層次的抽象就是過濾掉不同層次的資訊。這裡沒有展現出來的就是,我們確保最終要保留下來的資訊,都是當前抽象層需要的資訊。

六大原則

六大原則解決的問題是什麼?

六大原則定義了設計的一種規範,在軟體開發領域確保了,軟體的健壯性,擴充套件性,靈活性。最重要的還是體會六大原則這種思想。

單一職責原則

單一職責原則:一個類只有一種導致它變化的原因。簡單一點就是,一個類只負責一件事情。沒有絕對的單一職責,單一職責的劃分是基於當前業務條件下的職責劃分。 單一職責的由來,是由物件導向的核心思想,高內聚,低耦合中的高內聚的核心體現。

里氏替換原則

里氏替換原則:在父類出現的地方都可以由子類替換 原則:子類可以過載父類的方法,方法的前置條件(既方法的形參)要比父類方法的輸入引數更寬鬆。當子類方法實現父類的抽象方法時,方法的後置條件(既方法的返回值)要比父類更嚴格。

依賴倒置原則

依賴倒置原則:核心思想是面向介面程式設計,儘量對每個實現類都提取抽象和公共介面形成介面或抽象類,依賴於抽象而不要依賴於具體實現。依賴倒置原則的本質就是通過抽象(抽象類或介面)使各個類或模組的實現彼此獨立,不相互影響,實現模組間的鬆耦合。

迪米特法則

迪米特法則:又叫最少知道原則,就是說一個物件應當對其他物件有儘可能少的瞭解,不和陌生人說話。論被依賴的類多麼複雜,都應該將邏輯封裝在方法的內部,通過public方法提供給外部。這樣當被依賴的類變化時,才能最小的影響該類。最少知道原則的另一個表示式是:只與直接的朋友通訊。類之間只要有耦合關係,就叫朋友關係。耦合分為依賴,關聯聚合,組合等。我們稱出現為成員變數,方法引數,方法返回值中的類為直接朋友。區域性變數,臨時變數則不是直接朋友。我們要求陌生的類不要作為區域性變數出現在類中。

介面隔離原則

介面隔離原則:客戶端不應該依賴它不需要的介面;一個類對另外一個類的依賴應該建立在最小的介面上。

開閉原則

開閉原則:通過擴充套件來實現變化,而不是通過修改原有的類來實現變化。

總結:設計原則是一種思想,不要跟程式碼相耦合。他會指導我們去設計一個穩定性高,擴充套件性強,耦合性低的架構。

相關文章