设计模式6+1大原则
1、開閉原則
定義:一個(gè)軟件實(shí)體如類、模塊和函數(shù)應(yīng)該對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。
理解:當(dāng)業(yè)務(wù)出現(xiàn)新需求時(shí),盡量通過擴(kuò)展了的方式來時(shí)實(shí)現(xiàn)修改,原來的代碼能不動(dòng)就不動(dòng),因?yàn)楦膭?dòng)原來的代碼可能會(huì)出現(xiàn)一些未知的情況
?
2.里氏代換原則
定義:所有引用基類的地方必須能夠透明的使用其子類對(duì)象。(子類型能夠替換掉它們的父類型)
理解:這是一種良好的規(guī)范,要求我們開發(fā)基礎(chǔ)父類時(shí),只可擴(kuò)展父類,不可重寫父類方法,(即子類直接替換父類也可以實(shí)現(xiàn)同樣的效果),但是可以重載
重載時(shí):入?yún)r(shí)子類需要比父類范圍大,返回時(shí)子類需要比小(只有這樣,子類替換父類時(shí),執(zhí)行的還是父類方法)
eg:f.test(Map),c.test(HashMap);
f.test(new HashMap()) 執(zhí)行父類方法
c.test(new HashMap()) 執(zhí)行子類方法
?
3、依賴倒轉(zhuǎn)原則
定義:
1、高層模塊不應(yīng)該依賴低層模塊,兩者都應(yīng)該依賴于抽象(抽象類或接口)
2、抽象(抽象類或接口)不應(yīng)該依賴于細(xì)節(jié)(具體實(shí)現(xiàn)類)
3、細(xì)節(jié)(具體實(shí)現(xiàn)類)應(yīng)該依賴抽象
理解:調(diào)用方法的人永遠(yuǎn)只通過接口調(diào)用,不依賴具體實(shí)現(xiàn)。(低耦合,面向接口開發(fā))
?
4、接口隔離原則
定義:建立單一接口,不要建立臃腫龐大的接口
理解:一個(gè)接口不要試圖能實(shí)現(xiàn)太多功能,而是各個(gè)類建立專用的接口,這樣才能更加靈活。但是也可以太多細(xì)化,這樣會(huì)導(dǎo)致接口過多。
?
5、迪米特法則
定義:又叫最少知道原則,一個(gè)對(duì)象應(yīng)該對(duì)其他對(duì)象有最少的了解,這個(gè)應(yīng)該很好理解,就是降低各模塊之間的耦合一個(gè)對(duì)象應(yīng)該對(duì)其他對(duì)象有最少的了解,這個(gè)應(yīng)該很好理解,就是降低各模塊之間的耦合
理解:設(shè)計(jì)接口時(shí),只暴露他人需要的接口,將其他接口隱藏,減少依賴關(guān)系,實(shí)現(xiàn)松耦合。
?
6、單一職責(zé)原則
定義:不要存在多于一個(gè)導(dǎo)致類變更的原因。通俗的說,即一個(gè)類只負(fù)責(zé)一項(xiàng)職責(zé),應(yīng)該僅有一個(gè)引起它變化的原因
理解:單一職責(zé)的思想個(gè)人強(qiáng)調(diào)職責(zé),接口隔離原則強(qiáng)調(diào)接口細(xì)化。這樣做的好處有
1、降低類的復(fù)雜度
2、提高代碼可讀性
3、降低變更引起的風(fēng)險(xiǎn)
?
7、組合/聚合復(fù)用原則
定義:盡量使用組合/聚合的方式,而不是繼承的方式來達(dá)到復(fù)用的目的
理解:組合/聚合方式的優(yōu)點(diǎn)
1、黑箱復(fù)用,代碼細(xì)節(jié)不為外部所知
2、可以不影響其他代碼修改,靈活
組合/聚合方式的缺點(diǎn):
1、可能需要管理較多的對(duì)象或者方法
繼承的優(yōu)點(diǎn):
1、基類大部分功能直接繼承到派生類,并且修改基類,派生類也會(huì)修改,方便
繼承的缺點(diǎn):
1、父類的所有方法都會(huì)暴露給子類,白箱復(fù)用。
2、父類修改時(shí),子類也會(huì)修改,不夠靈活。
?
轉(zhuǎn)載于:https://www.cnblogs.com/jaxlove-it/p/9343118.html
總結(jié)
以上是生活随笔為你收集整理的设计模式6+1大原则的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: P3572 [POI2014]PTA-L
- 下一篇: 设计模式学习笔记-状态模式