SOLID、單一職責原則(Single responsibility principle, SRP)、開放封閉原則(Open/Close principle, OCP)、里氏替換原則(Liskov substitution principle, LSP)、接口隔離原則(Interface segregation principle, ISP)、依賴反轉原則(Dependency inversion principle, DIP)、Object-Oriented Design Principle
JC藉由部落格紀錄程式設計觀念SOLID
一、單一職責原則(Single Responsibility Principle) SRP
原文 : There should never be more than one reason for a class to change.
就是對一個類而言,應該僅有一個引起它變化的原因。換句話說,一個類的功能要單一,只做自己份內該做的事。
二、開放封閉原則(Open / Close Principle) OCP
原文 : Software entities should be open forextension,but closed formodification.
對於功能的擴充套件因該是保持開放,可追加擴充功能。
對於修改是封閉,既有的類別不可修改。
三、里氏替換原則(Liskov Substitution Principle) LSP
原文 : If for each object o1 of type S there is an object o2 of type T such that for all programs P defined in terms of T,the behavior of P is unchanged when o1 is substituted for o2 then S is a subtype of T.
一般的解釋是只要有父類別出現的地方,則子類別也能出現,且替換為子類別時,不會產生錯誤或異常。但反過來則不行,子類別出現的地方,父類別未必能使用。
四、接口隔離原則(Interface Segregation Principle) ISP
原文 : A client should not be forced to implement an interface that it doesn’t use.
類別不應該實作不需要用到的介面方法。
五、依賴反轉原則(Dependency Inversion Principle) DIP
原文 :
High-level modules should not depend on low-level modules. Both should depend on abstractions.
Abstractions should not depend on details. Details should depend on abstractions.
高層模組不應該依賴底層模組,應該依賴抽象。
抽象不應該依賴細節。細節應該依賴抽象。