面向物件五大基本原則
阿新 • • 發佈:2018-12-24
以前一直認為程式中的類有使用到封裝繼承多型就是面向物件設計,其實不然
封裝,繼承,多型只是面向物件的三大特性,但是在設計程式的時候並不是說類的結構使用到了(或是體現出了)這三個特性就是面向物件,
其實真正的面向物件設計是要符合下面的五大原則,
面向物件的五大基本原則
單一職責原則(SRP)
開放封閉原則(OCP)
里氏替換原則(LSP)
依賴倒置原則(DIP)
介面隔離原則(ISP)
單一職責原則(SRP)
• 一個類應該僅有一個引起它變化的原因(最簡單,最容易理解卻最不容易做到的一個設計原則)
職員類例子:
比如在職員類裡,將工程師、銷售人員、銷售經理這些情況都放在職員類裡考慮,其結果將會非常混亂,在這個假設下,職員類裡的每個方法都要if else判斷是哪種情況,從類結構上來說將會十分臃腫,並且上述三種的職員型別,不論哪一種發生需求變化,都會改變職員類!這個是大家所不願意看到的!
開放封閉原則(OCP)
• 既開放又封閉,對擴充套件是開放的,對更改是封閉的!
• 擴充套件即擴充套件現行的模組,當我們軟體的實際應用發生改變時,出現新的需求,就需要我們對模組進行擴充套件,使其能夠滿足新的需求!
更改封閉即是在我們對模組進行擴充套件時,勿需對源有程式程式碼和DLL進行修改或重新編譯檔案!
這個原則對我們在設計類的時候很有幫助,堅持這個原則就必須儘量考慮介面封裝,抽象機制和多型技術!
里氏替換原則(LSP)
• 子類可以替換父類並且出現在父類能夠出現的任何地方
• 這個原則也是在貫徹GOF倡導的面向介面程式設計!
在這個原則中父類應儘可能使用介面或者抽象類來實現!
子類通過實現了父類介面,能夠替父類的使用地方!
通過這個原則,我們客戶端在使用父類介面的時候,通過子類實現!
意思就是說我們依賴父類介面,在客戶端宣告一個父類介面,通過其子類來實現
這個時候就要求子類必須能夠替換父類所出現的任何地方,這樣做的好處就是,在根據新要求擴充套件父類介面的新子類的時候而不影響當前客戶端的使用!
依賴倒置原則(DIP)
• 傳統的結構化程式設計中,最上層的模組通常都要依賴下面的子模組來實現,也
稱為高層依賴低層!
所以DIP原則就是要逆轉這種依賴關係,讓高層模組不要依賴低層模組,所以稱之為依賴倒置原則!
ISP 介面隔離原則