單一職責原則
就乙個類而言,應該僅有乙個引起它變化的原因。職責即為「變化的原因」。
開放封閉原則
軟體實體(類、模組、函式等)應該是可以擴充套件的,但是不可修改。對於擴充套件是開放的,對於更改是封閉的。關鍵是抽象,將乙個功能的通用部分和實現細節部分清晰的分離開來。
理氏替換原則
子型別必須能替換掉他們的基本型別。
依賴倒置原則
抽象不應該依賴於細節。細節應該依賴於抽象。程式中所有的依賴關係都應該終止於抽象類和介面。針對介面而非實現程式設計。任何變數都不應該持有乙個指向具體類的指標或引用。任何類都不應該從具體類派生。任何方法都不應該覆寫他的任何基類中的已經實現了的方法。
迪公尺特法則
如果兩個類不必彼此通訊,那麼這兩個類就不應該發生直接的相互作用。如果其中乙個類需要呼叫另乙個類的某個方法,可以通過第三者**這個呼叫。其本意是,設計中要注意松耦合。
介面隔離原則
不應該強迫客戶依賴於他們不用的方法。介面屬於客戶,不屬於他所在的類層次結構。多個面向特定使用者的介面勝於乙個通用介面。
重用發布等價原則
重用的粒度就是發布的粒度。
共同重用原則
乙個包中的所有類應該是共同重用的。如果重用了包中的乙個類,那麼就要重用包中的所有類。相互之間沒有緊密聯絡的類不應該在同乙個包中。
共同封閉原則
包中的所有類對於同一類性質的變化應該是共同封閉的。乙個變化若對乙個包影響,則將對包中的所有類產生影響,而對其他的包不造成任何影響。
無依賴原則
在包的依賴關係中不允許存在環。細節不應該被依賴。
穩定依賴原則
朝著穩定的方向進行依賴。應該把封裝系統高層設計的軟體(比如抽象類)放進穩定的包中,不穩定的包中應該只包含那些很可能會改變的軟體(比如具體類)。
穩定抽象原則
包的抽象程度應該和其他穩定程度一致。乙個穩定的包應該也是抽象的,乙個不穩定的包應該是抽象的。
預設抽象原則
在介面和實現介面的類之間引入乙個抽象類,這個類實現了介面的大部分操作。
介面設計原則
規劃乙個介面而不是實現乙個介面。
黑盒原則
多用類的聚合,少用類的繼承。
不構造具體的超類原則
避免維護具體的超類。
物件導向設計原則 《敏捷軟體開發》讀書筆記
摘抄自 敏捷軟體開發 原則 方法與實踐 robert c.martin 1 srp 單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因。職責即為 變化的原因 2 ocp 開放封閉原則 軟體實體 類 模組 函式等 應該是可以擴充套件的,但是不可修改。對於擴充套件是開放的,對於更改是封閉的.關鍵是...
物件導向讀書筆記
靜態類和非靜態類 靜態類 靜態屬性等 是類所有的,非靜態類為類的例項所有的。靜態類是類的所有例項所共享的,無論此類建立了多少例項,靜態類在記憶體中都只開闢了一塊儲存空間。const常量也可以看成這種型別 public class myclass 呼叫時可以直接myclass.kiss my clas...
讀書筆記 物件導向
看了譚云傑老師的 thinking in uml 一書,前面講解了物件導向的內容,特此編寫一下讀書筆記。封裝 繼承 多型 構造乙個更大更複雜的系統 復用 可拓展性增強 利於分工協作 更能專注某個功能點研究,需要考慮的資訊量大大減少。現實世界如何對映到乙個物件世界?物件世界如何描述現實世界?如何驗證物...