物件導向設計原則(Object-Oriented Design Principle)-SOLID

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.

高層模組不應該依賴底層模組,應該依賴抽象。

抽象不應該依賴細節。細節應該依賴抽象。