1. 程式人生 > >面向對象五大基本原則

面向對象五大基本原則

新的 做到 str 可能 gof 特性 根據 dll 工程師

以前一直認為程序中的類有使用到封裝繼承多態就是面向對象設計,其實不然

封裝,繼承,多態只是面向對象的三大特性,但是在設計程序的時候並不是說類的結構使用到了(或是體現出了)這三個特性就是面向對象,

其實真正的面向對象設計是要符合下面的五大原則,

面向對象的五大基本原則
單一職責原則(SRP)
開放封閉原則(OCP)
裏氏替換原則(LSP)
依賴倒置原則(DIP)
接口隔離原則(ISP)

單一職責原則(SRP)

? 一個類應該僅有一個引起它變化的原因(最簡單,最容易理解卻最不容易做到的一個設計原則)
職員類例子:
比如在職員類裏,將工程師、銷售人員、銷售經理這些情況都放在職員類裏考慮,其結果將會非常混亂,在這個假設下,職員類裏的每個方法都要if else判斷是哪種情況,從類結構上來說將會十分臃腫,並且上述三種的職員類型,不論哪一種發生需求變化,都會改變職員類!這個是大家所不願意看到的!

開放封閉原則(OCP)

? 既開放又封閉,對擴展是開放的,對更改是封閉的!

? 擴展即擴展現行的模塊,當我們軟件的實際應用發生改變時,出現新的需求,就需要我們對模塊進行擴展,使其能夠滿足新的需求!

更改封閉即是在我們對模塊進行擴展時,勿需對源有程序代碼和DLL進行修改或重新編譯文件!

這個原則對我們在設計類的時候很有幫助,堅持這個原則就必須盡量考慮接口封裝,抽象機制和多態技術!


裏氏替換原則(LSP)

? 子類可以替換父類並且出現在父類能夠出現的任何地方

? 這個原則也是在貫徹GOF倡導的面向接口編程!
在這個原則中父類應盡可能使用接口或者抽象類來實現!

子類通過實現了父類接口,能夠替父類的使用地方!
通過這個原則,我們客戶端在使用父類接口的時候,通過子類實現!
意思就是說我們依賴父類接口,在客戶端聲明一個父類接口,通過其子類來實現
這個時候就要求子類必須能夠替換父類所出現的任何地方,這樣做的好處就是,在根據新要求擴展父類接口的新子類的時候而不影響當前客戶端的使用!

依賴倒置原則(DIP)

? 傳統的結構化編程中,最上層的模塊通常都要依賴下面的子模塊來實現,也
稱為高層依賴低層!
所以DIP原則就是要逆轉這種依賴關系,讓高層模塊不要依賴低層模塊,所以稱之為依賴倒置原則!

ISP 接口隔離原則

? 這個原則的意思是:使用多個專門的接口比使用單個接口要好的多!

面向對象五大基本原則