面向?qū)ο蟮奈宕蠡驹瓌t

以前一直認(rèn)為程序中的類有使用到封裝繼承多態(tài)就是面向?qū)ο笤O(shè)計,其實不然。

封裝、繼承、多態(tài)只是面向?qū)ο蟮娜筇匦裕窃谠O(shè)計程序的時候并不是說類的結(jié)構(gòu)使用到了(或是體現(xiàn)出了)這三個特性就是面向?qū)ο螅?/b>其實真正的面向?qū)ο笤O(shè)計是要符合下面的五大原則:

單一職責(zé)原則(SRP)

開放封閉原則(OCP)

里氏替換原則(LSP)

依賴倒置原則(DIP)

接口隔離原則(ISP)

單一職責(zé)原則(SRP)

?????? 一個類應(yīng)該僅有一個引起它變化的原因(最簡單,最容易理解卻最不容易做到的一個設(shè)計原則)

職員類例子:

比如在職員類里,將工程師、銷售人員、銷售經(jīng)理這些情況都放在職員類里考慮,其結(jié)果將會非常混亂,在這個假設(shè)下,職員類里的每個方法都要if else判斷是哪種情況,從類結(jié)構(gòu)上來說將會十分臃腫,并且上述三種的職員類型,不論哪一種發(fā)生需求變化,都會改變職員類!這個是大家所不愿意看到的!

開放封閉原則(OCP)

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

?????? 擴展即擴展現(xiàn)行的模塊,當(dāng)我們軟件的實際應(yīng)用發(fā)生改變時,出現(xiàn)新的需求,就需要我們對模塊進行擴展,使其能夠滿足新的需求!

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

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

里氏替換原則(LSP)

?????? 子類可以替換父類并且出現(xiàn)在父類能夠出現(xiàn)的任何地方

?????? 這個原則也是在貫徹GOF倡導(dǎo)的面向接口編程!

在這個原則中父類應(yīng)盡可能使用接口或者抽象類來實現(xiàn)!

子類通過實現(xiàn)了父類接口,能夠替父類的使用地方!

通過這個原則,我們客戶端在使用父類接口的時候,通過子類實現(xiàn)!

意思就是說我們依賴父類接口,在客戶端聲明一個父類接口,通過其子類來實現(xiàn)

這個時候就要求子類必須能夠替換父類所出現(xiàn)的任何地方,這樣做的好處就是,在根據(jù)新要求擴展父類接口的新子類的時候而不影響當(dāng)前客戶端的使用!

依賴倒置原則(DIP)

?????? 傳統(tǒng)的結(jié)構(gòu)化編程中,最上層的模塊通常都要依賴下面的子模塊來實現(xiàn),也

稱為高層依賴低層!

所以DIP原則就是要逆轉(zhuǎn)這種依賴關(guān)系,讓高層模塊不要依賴低層模塊,所以稱之為依賴倒置原則!

接口隔離原則(ISP)

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

這個我有體會,在我實際編程中,為了減少接口的定義,將許多類似的方法都放在一個接口中,最后發(fā)現(xiàn),維護和實現(xiàn)接口的時候花了太多精力,而接口所定義的操作相當(dāng)于對客戶端的一種承諾,這種承諾當(dāng)然是越少越好,越精練越好,過多的承諾帶來的就是你的大量精力和時間去維護!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 面向?qū)ο蟮奈宕蠡驹瓌t 單一職責(zé)原則(SRP) ? 一個類應(yīng)該僅有一個引起它變化的原因(最簡單,最容易理解卻最...
    Reepu閱讀 442評論 0 0
  • 單一職責(zé)原則 (SRP) 全稱 SRP , Single Responsibility Principle 單一職...
    米莉_L閱讀 1,788評論 2 5
  • 面向?qū)ο蟮?個基本要素: 封裝、繼承、多態(tài) 面向?qū)ο蟮?個基本設(shè)計原則: 單一職責(zé)原則(Single-Respos...
    badcyc閱讀 880評論 0 4
  • 昨天晚上在“一塊聽聽”上聽了王淵源講關(guān)于“靠計劃完成英語學(xué)習(xí)”,教大家對現(xiàn)在的英語水平做一個評估,然后對想要的目標(biāo)...
    水平生閱讀 182評論 0 0
  • 今天是個好日子,開工大吉! 先生宣布2017年工作方向和重點。當(dāng)我聽到每個詞每一句話都是公司的長遠目標(biāo),關(guān)心大家的...
    謝謝我的家人閱讀 150評論 2 0