00_设计模式6大原则
轉(zhuǎn)載自https://www.cnblogs.com/HigginCui/p/6195318.html
【六大原則總覽】
1.單一職責(zé)原則
2.里氏替換原則
3.依賴(lài)導(dǎo)致原則
4.接口隔離原則
5.迪米特法則
6.開(kāi)閉原則
?
【原則一:單一職責(zé)原則】
英文全稱(chēng):Single Responsibility Principle,簡(jiǎn)稱(chēng)SRP。
要求一個(gè)接口或類(lèi)只有一個(gè)原因引起變化,就是一個(gè)接口或類(lèi)只有一個(gè)原則,它就負(fù)責(zé)一件事情。
[ 好處 ]?
* 類(lèi)的復(fù)雜性降低,實(shí)現(xiàn)什么職責(zé)都有清晰明確的定義;
* 可讀性提高,復(fù)雜性降低。
* 可維護(hù)性提高。
* 變更引起的風(fēng)險(xiǎn)降低。如果接口的定義職責(zé)做的很好,一個(gè)接口修改只對(duì)相應(yīng)的實(shí)現(xiàn)類(lèi)有影響,對(duì)其它接口沒(méi)有影響,這對(duì)系統(tǒng)的擴(kuò)展性和可維護(hù)性非常大的幫助。
?
?
【原則二:里氏替換原則】
首先分析一下繼承的優(yōu)點(diǎn)缺點(diǎn);
[ 繼承的優(yōu)點(diǎn) ]
* 代碼共享,減少創(chuàng)建類(lèi)的工作量,每個(gè)子類(lèi)都擁有父類(lèi)的方法和屬性。
* 提高了代碼的重用性。
* 子類(lèi)可以形似父類(lèi),但又異于父類(lèi)。
* 提高代碼的擴(kuò)展性,許多開(kāi)源框架的擴(kuò)展接口都是通過(guò)繼承父類(lèi)來(lái)完成的。
* 提高產(chǎn)品或項(xiàng)目的開(kāi)放性。
[ 繼承的缺點(diǎn) ]
* 繼承是侵入性的。只要繼承,子類(lèi)就必須擁有父類(lèi)的所有屬性和方法。
* 降低代碼的靈活性,子類(lèi)必須擁有父類(lèi)的屬性和方法,給子類(lèi)添加了約束。
* 增強(qiáng)了代碼的耦合性,當(dāng)父類(lèi)的常量、變量或方法修改時(shí),就要考慮子類(lèi)的修改。
[ 里氏替換原則的定義 ]
只要父類(lèi)能出現(xiàn)的地方,子類(lèi)就可以出現(xiàn),而且替換給子類(lèi)就不會(huì)出現(xiàn)任何的錯(cuò)誤或異常,使用者不需要知道是子類(lèi)還是父類(lèi),但是反過(guò)來(lái)是不可以的,有子類(lèi)出現(xiàn)的地方,父類(lèi)未必就可以。
[ 里氏替換原則的四層含義 ]
* 子類(lèi)必須實(shí)現(xiàn)父類(lèi)的方法。
* 子類(lèi)必須有自己的個(gè)性
* 覆蓋或?qū)崿F(xiàn)或父類(lèi)的方法時(shí)輸入?yún)?shù)可以被放大。
* 覆寫(xiě)或?qū)崿F(xiàn)父類(lèi)的方法時(shí)輸出結(jié)果可以被縮小。
?
【原則三:依賴(lài)倒置原則】
[ 在java語(yǔ)言中的表現(xiàn) ]?
* 模塊間的依賴(lài)通過(guò)抽象發(fā)生,實(shí)現(xiàn)類(lèi)之間不發(fā)生直接的依賴(lài)關(guān)系,其依賴(lài)關(guān)系通過(guò)接口或抽象類(lèi)產(chǎn)生。
* 接口或抽象類(lèi)不依賴(lài)其實(shí)現(xiàn)類(lèi)。
* 實(shí)現(xiàn)類(lèi)依賴(lài)接口或抽象類(lèi)。
?
【原則四:接口隔離原則】
接口隔離原則要求接口中的方法盡量少。(單一職責(zé)要求類(lèi)和接口職責(zé)單一,注重的是職責(zé),是業(yè)務(wù)邏輯上的劃分)
?
【原則五:迪米特法則】
也稱(chēng)為最少知識(shí)原則,一個(gè)對(duì)象應(yīng)該對(duì)其它對(duì)象由最少的了解,即一個(gè)類(lèi)應(yīng)該對(duì)自己需要耦合或調(diào)用的類(lèi)知道的最少。
?
【原則六:開(kāi)閉原則】
軟件實(shí)體,應(yīng)該對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉,含義就是一個(gè)原件實(shí)體應(yīng)該通過(guò)擴(kuò)展來(lái)實(shí)現(xiàn)變化,而不是通過(guò)修改已有的代碼來(lái)實(shí)現(xiàn)變化。
總結(jié)
以上是生活随笔為你收集整理的00_设计模式6大原则的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 极光推送经验之谈-Java后台服务器实现
- 下一篇: wpf加载上千张图片部分图片不显示_开源