1. 程式人生 > >面向物件的五大原則

面向物件的五大原則

面向物件的三大特性是"封裝、"多型"、"繼承",五大原則是"單一職責原則"、"開放封閉原則"、"里氏替換原則"、"依賴倒置原則"、"介面分離原則"。

 

五大基本原則:SPR, OCP, LSP, DIP, ISP

單一職責原則(Single-Resposibility Principle)

其核心思想是:是指一個類的功能要單一,最好只做一件事,只有一個引起它變化的原因。

單一職責原則可以看做低耦合、高內聚在面向物件原則上的引申,將職責定義為引起變化的原因,以提高內聚性來減少引起變化的原因。職責過多,引起它變化的原因就越多,這將導致職責依賴,相互之間就產生影響,從而損傷內聚性和耦合度。通常意義下的單一職責,就是指只有一種單一功能,不要為類實現過多的功能點,以保證實體只有一個引起它變化的原因。

開放封閉原則(Open-Closed principle)

其核心思想是:軟體實體是可擴充套件的,而不可修改的。開放封閉原則主要體現在兩個方面:

1.對拓展開放,意味著有新的需求或變化時,可以對現有程式碼進行拓展,以適應新的情況;

2.對修改封閉,意味著一旦設計完成,就可以獨立完成其工作,而不需要對其進行任何的修改。

里氏替換原則(Liskov-Substituion Principle)

其核心思想是:子類必須能夠替換其基類。

這一思想體現為對繼承機制的約束規範,只有子類能夠替換基類時,才能保證系統在執行期內識別子類,這是保證繼承複用的基礎。同時,這一約束反過來則是不成立的,子類可以替換基類,但是基類不一定能替換子類。

依賴倒置原則(Dependecy-Inversion Principle)

其核心思想是:依賴於抽象。具體而言就是高層模組不依賴於底層模組,二者都同依賴於抽象;抽象不依賴於具體,具體依賴於抽象。

依賴一定會存在於類與類、模組與模組之間。當兩個模組之間存在緊密的耦合關係時,最好的方法就是分離介面和實現:在依賴之間定義一個抽象的介面使得高層模組呼叫介面,而底層模組實現介面的定義,以此來有效控制耦合關係,達到依賴於抽象的設計目標。

抽象的穩定性決定了系統的穩定性,因為抽象是不變的,依賴於抽象是面向物件設計的精髓,也是依賴倒置原則的核心。

依賴於抽象是一個通用的原則,而某些時候依賴於細節則是在所難免的,必須權衡在抽象和具體之間的取捨,方法不是一層不變的。依賴於抽象,就是對介面程式設計,不要對實現程式設計。

介面隔離原則(Interface-Segregation Principle)

其核心思想是:使用多個小的專門的介面,而不要使用一個大的總介面。