。※單一職責原則:就乙個類而言,應該僅有乙個引起它變化的原因。
單一是乙個類的優良設計。交雜不清的職責將使得**看起來特別彆扭牽一髮而動全身,
有失美感和必然導致醜陋的系統錯誤風險。
※開放封閉原則:是說軟體實體(類、模組、函式等等)應該可以擴充套件但不可修改。
實現開開放封閉原則的核心思想就是對抽象程式設計,而不對具體程式設計,因為抽象相對穩定。
讓類依賴於固定的抽象,所以修改就是封閉的;而通過物件導向的繼承和多型機制,
又可以實現對抽象類的繼承,通過覆寫其方法來改變固有行為,實現新的拓展方法,所以就是開放的。
「需求總是變化」沒有不變的軟體,所以就需要用封閉開放原則來封閉變化滿足需求,
同時還能保持軟體內部的封裝體系穩定,不被需求的變化影響。
※依賴倒置原則:依賴抽象,不要依賴具體。
抽 象的穩定性決定了系統的穩定性,因為抽象是不變的,依賴於抽象是物件導向設計的精髓,
也是依賴倒置原則的核心。依賴於抽象是乙個通用的原則,而某些時候依 賴於細節則是在所難免的,
必須權衡在抽象和具體之間的取捨,方法不是一層不變的。依賴於抽象,就是對介面程式設計,不要對實現程式設計。
※黎克特制代換原則:子型別必須能夠替換到他們的父型別。
liskov 替換原則,主要著眼於對抽象和多型建立在繼承的基礎上,因此只有遵循了liskov替換原則,
才能保證繼承復用是可靠地。實現的方法是面向介面程式設計:將公 共部分抽象為基類介面或抽象類,
通過extractabstractclass,在子類中通過覆寫父類的方法實現新的方式支援同樣的職責。liskov替 換原則能夠
保證系統具有良好的拓展性,同時實現基於多型的抽象機制,能夠減少**冗餘,避免執行期的型別判別。
※介面隔離原則:多個和客戶相關的介面要好於乙個通用介面。
分離的手段主要有以下兩種:1、委託分離,通過增加乙個新的型別來委託客戶的請求,隔離客戶和介面的直接依賴,
但是會增加系統的開銷。2、多重繼承分離,通過介面多繼承來實現客戶的需求,這種方式是較好的。
下邊是前面沒有提到過的兩個原則,也是設計時要考慮的重要原則。
※迪公尺特法則:不相互直接通訊的類之間,不要直接發生相互作用。
如果兩個類不必彼此直接通訊,那麼這兩個類就不應當發生直接的相互作用。如果乙個類需要呼叫領乙個類的
某個方法話,可以通過第三者**這個呼叫。迪公尺特法則首先強調的前提是在類的設計上,每一類都應當盡量
降低成員的訪問許可權。它的根本思想是強調類之間的松耦合。
※合成/聚合復用原則:盡量使用合成/聚合,盡量不要使用繼承。
合 成(composition)和聚合(aggregation)都是關聯的特殊種類,聚合表示一種弱的擁有關係;
合成這是一種強的擁有關係,體現了嚴格的部分和整體的關係,部分和整體的生命週期一樣。
優先使用合成或聚合原則將有助於保持每個類被封裝,並被集中在單個任務上。這樣類和類繼承
層次會保持較小規 模,並且不太可能增長為不可控制的龐然大物。
設計模式基本原則
設計模式基本原則 開 閉 原則 open closed principle,或者ocp 原文 software entities should be open for extension,but closed for modification.解釋 乙個軟體實體應當對擴充套件開放,對修改關閉。黎克特...
設計模式基本原則
1 單一職責原則 類的職責要單一 不要將太多的職責放到同乙個類當中去。eg 資料結構職責類和演算法行為都放在乙個類。我們應該把資料結構和行為分開。2 開閉原則 乙個軟體實體應該對擴充套件開放,對修改關閉。可變性封裝 3 黎克特制代換原則 可以接受基類物件的地方必然要可以接受子類的物件。4 依賴倒轉原...
設計模式基本原則
設計模式基本原則 開 閉 原則 open closed principle,或者ocp 原文 software entities should be open for extension,but closed for modification.解釋 乙個軟體實體應當對擴充套件開放,對修改關閉。黎克特...