1. 程式人生 > >設計模式的概念以及面向對象設計原則

設計模式的概念以及面向對象設計原則

結構圖 spa 需要 design 轉發 步驟 復雜度 中一 --

設計模式的定義
設計模式(Design Pattern)是一套面向對象的代碼設計經驗總結。
設計模式是一種思想,也是一種技術。
一種設計模式就是一種解決實際問題的方案。
每一種設計模式雖然有既定的結構圖和基本程序代碼,但是應該不局限於此,要理解其精髓而熟練應用。

OOP的六大設計原則

單一職責原則
定義:對於一個類,應該只有一個引起它變化的原因。
|-----降低類的復雜度,一個類只負責一項職責,其邏輯肯定要比負責多項職責簡單。
|-----提高類的可讀性,提高系統的可維護性。

裏氏代換原則
定義:子類型必須能夠替換掉它們的父類型。
|-----反映了子類和父類的關系
|-----如果一個軟件實體使用的是一個父類,那麽就肯定適用於其子類,並且該軟件實體察覺不出父類對象和子類對象的區別。


|-----正是由於父類型的可替換性,才使得父類類型的模塊在無需修改的情況下,就可以通過使用不同的子類得到擴展。
|-----裏氏替換原則是對實現抽象化的具體步驟的規範。

開放-封閉原則
定義:程序的實體對象(模塊、類、函數等)應該可以進行擴展,但不應該可以修改。
|-----開閉原則是面向對象開發中所有設計原則的核心。
|-----對已有程序的擴展優先采用添加新的類或者模塊的方式來進行,而不是通過修改現有的類或者模塊來進行。
|-----軟件設計本身所追求的目標就是封裝變化、降低耦合,OCP是對這一目標的最直接的體現。

依賴倒轉原則
定義:程序的高層模塊不應該依賴底層模塊,但兩者都應依賴於抽象;抽象不應該依賴於具體,而細節應該依賴於抽象。


|-----即要針對接口編程,而不是針對實現編程。
|-----依賴倒轉原則的本質是通過抽象(接口或抽象類)使各個類或模塊的實現彼此獨立,不互相影響,從而實現模塊間的松耦合。
|-----簡單來將,依賴倒轉原則就是要求客戶端應該依賴於抽象耦合。傳統的過程性系統設計傾向於使高層次模塊依賴於低層次模塊,抽象的層次依賴於具體的層次。現在要將這個錯誤的依賴關系“倒轉”過來。
|-----使用這個原則,意味著上層類不直接使用底層類,他們使用接口作為抽象層。

合成/聚合復用原則
定義:盡量不適用類繼承,而盡量使用合成/聚合。
|-----聚合表示弱的擁有關系,合成則表達強的擁有關系,體現的是嚴格的整體與部分之間的關系。

迪米特法則
定義:如果兩個類之間不必直接通信,則這兩個類不應該發生直接的相互作用。如果其中一個類需要調用另一個類的某個方法,可以通過第三方來轉發這個調用。
|-----talk only to your immediate friends.
|-----強調的前提是在類的結構設計上,每一個類都要盡量降低成員的訪問權限,類自己包裝好自己的private狀態,不需要讓別的類知道的屬性or行為就不公開。
|-----迪米特法則的根本思想,是強調類之間的盡量實現松散耦合。類之間的耦合越弱,越有利於復用。

設計模式的概念以及面向對象設計原則