OOP6大原則之一二三

OOP基本上有6大原則,而實(shí)際上都是互補(bǔ)的,也就是說一些原則需要利用另一些原則來實(shí)現(xiàn)自己。6大原則如下:

1) Open-Close Principle(OCP),開-閉原則,講的是設(shè)計(jì)要對擴(kuò)展有好的支持,而對修改要嚴(yán)格限制。這是最重要也是最為抽象的原則,基本上我們所說的Reusable Software既是基于此原則而開發(fā)的。其他的原則也是對它的實(shí)現(xiàn)提供了路徑。

2) Liskov Substituition Principle(LSP),里氏代換原則,很嚴(yán)格的原則,規(guī)則是“子類必須能夠替換基類(父類),否則不應(yīng)當(dāng)設(shè)計(jì)為其子類。”也就是說,子類只能去擴(kuò)展基類,而不是隱藏或覆蓋基類。

3) Dependence Inversion Principle(DIP),依賴倒換原則,“設(shè)計(jì)要依賴于抽象而不是具體化”。換句話說就是設(shè)計(jì)的時(shí)候我們要用抽象來思考,而不是一上來就開始劃分我需要哪些哪些類,因?yàn)檫@些是具體。這樣做有什么好處呢?人的思維本身實(shí)際上就是很抽象的,我們分析問題的時(shí)候不是一下子就考慮到細(xì)節(jié),而是很抽象的將整個(gè)問題都構(gòu)思出來,所以面向抽象設(shè)計(jì)是符合人的思維的。另外這個(gè)原則會很好的支持OCP,面向抽象的設(shè)計(jì)使我們能夠不必太多依賴于實(shí)現(xiàn),這樣擴(kuò)展就成為了可能,這個(gè)原則也是另一篇文章《Design by Contract》的基石。

4) Interface Segregation Principle(ISP),接口隔離原則,“將大的接口打散成多個(gè)小接口”,這樣做的好處很明顯,我不知道有沒有必要再繼續(xù)描述了,為了節(jié)省篇幅,實(shí)際上我對這些原則只是做了一個(gè)小總結(jié),如果有需要更深入了解的話推薦看《Java與模式》,MS MVP的一:本巨作!^_^

5)單一職責(zé):一個(gè)類的功能盡量單一,降低耦合

6) Law of Demeter or Least Knowlegde Principle(LoD or LKP),迪米特法則或最少知識原則,這個(gè)原則首次在Demeter系統(tǒng)中得到正式運(yùn)用,所以定義為迪米特法則。它講的是“一個(gè)對象應(yīng)當(dāng)盡可能少的去了解其他對象”。也就是又一個(gè)關(guān)于如何松耦合(Loosely-Coupled)的法則。

好了,以上是6大原則(或法則)的介紹,對這些原則的深入研究正是如何得到設(shè)計(jì)模式的道路。在進(jìn)行了深入了解后我們就可以開始看看設(shè)計(jì)模式了,設(shè)計(jì)模式正是對這些法則的應(yīng)用,著名的設(shè)計(jì)模式有四人幫(Gang

of Four,GoF)的23個(gè)模式,除此之外還有很多其他的一些著名模式,大家可以慢慢研究。

更過技術(shù)問題解決防范請搜索千鋒PHP,千鋒論壇

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容