面向對象 三大特性 五大基本原則

    之前一直認爲程序中的類有使用到封裝,繼承,多態就是面向對象設計,其實否則 封裝,繼承,多態只是面向對象的三大特性,可是在設計程序的時候並非說類的結構使用到了(或是體現出了)這三個特性就是面向對象,其實真正的面向對象設計是要符合下面的五大原則,編程

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

 

單一職責原則(SRP)
一個類應該僅有一個引發它變化的緣由 (最簡單,最容易理解卻最不容易作到的一個設計原則)
例子:
  好比在職員類裏,將工程師、銷售人員、銷售經理這些狀況都放在職員類裏考慮,其結果將會很是混亂,在這個假設下,職員類裏的每一個方法都要if else判斷是哪一種狀況,從類結構上來講將會十分臃腫,而且上述三種的職員類型,不論哪種發生需求變化,都會改變職員類!這個是你們所不肯意看到的設計


開放封閉原則(OCP)
既開放又封閉,對擴展是開放的,對更改是封閉的!
擴展即擴展示行的模塊,當咱們軟件的實際應用發生改變時,出現新的需求,就須要咱們對模塊進行擴展,使其可以知足新的需求,
更改封閉便是在咱們對模塊進行擴展時,勿需對源有程序代碼和DLL進行修改或從新編譯文件!
這個原則對咱們在設計類的時候頗有幫助,堅持這個原則就必須儘可能考慮接口封裝,抽象機制和多態技術!對象

 

里氏替換原則(LSP)
子類能夠替換父類而且出如今父類可以出現的任何地方
這個原則也是在貫徹GOF倡導的面向接口編程!
在這個原則中父類應儘量使用接口或者抽象類來實現!
子類經過實現了父類接口,可以替父類的使用地方!
經過這個原則,咱們客戶端在使用父類接口的時候,經過子類實現!意思就是說咱們依賴父類接口,在客戶端聲明一個父類接口,經過其子類來實現
這個時候就要求子類必須可以替換父類所出現的任何地方,這樣作的好處就是,在根據新要求擴展父類接口的新子類的時候而不影響當前客戶端的使用!
 繼承

依賴倒置原則(DIP)
傳統的結構化編程中,最上層的模塊一般都要依賴下面的子模塊來實現,也稱爲高層依賴低層
因此DIP原則就是要逆轉這種依賴關係,讓高層模塊不要依賴低層模塊,因此稱之爲依賴倒置原則!接口

接口隔離原則 ( ISP )
這個原則的意思是:使用多個專門的接口比使用單個接口要好的多!
這個我有體會,在我實際編程中,爲了減小接口的定義,將許多相似的方法都放在一個接口中,最後發現,維護和實現接口的時候花了太多精力,而接口所定義的操做至關於對客戶端的一種承諾,這種承諾固然是越少越好,越精練越好,過多的承諾帶來的就是你的大量精力和時間去維護!編譯

相關文章
相關標籤/搜索