設(shè)計(jì)模式的七大原則
目的:使程序高內(nèi)聚稿械、松耦合选泻,以及可維護(hù)性,可擴(kuò)展美莫,重用性和靈活性页眯。
一、單一職責(zé)
每個(gè)類只實(shí)現(xiàn)同一項(xiàng)職責(zé)厢呵。
批注:相當(dāng)于保持每個(gè)類是一項(xiàng)職責(zé)的元類窝撵。如果類中方法少,可以在類中的方法里實(shí)現(xiàn)單一職責(zé)襟铭,降低了元類中if判斷碌奉,把類相對獨(dú)立化。
二寒砖、接口隔離
最小接口法則赐劣;
每個(gè)實(shí)現(xiàn)類都能實(shí)現(xiàn)了接口的全部方法。
三入撒、依賴倒置
高層模塊不應(yīng)該依賴低層模塊隆豹,都應(yīng)該依賴于抽象(接口或抽象類),尤其是低層一定要依賴抽象茅逮。
面向?qū)ο罅模猿橄鬄榛A(chǔ)搭建架構(gòu),細(xì)節(jié)再依賴抽象 實(shí)現(xiàn)献雅。
批注:高層抽象碉考,底層具體實(shí)現(xiàn)。
變量的聲明類型盡量是抽象類或接口挺身,這樣就存在一個(gè)緩沖層侯谁,有利于程序擴(kuò)展和優(yōu)化
依賴傳遞的三種方式
1)接口傳遞
2)構(gòu)造方法
3)setter方法傳遞
四、里式替換
所有引用基類的地方必須能透明地使用其子類的對象。就是子類盡量不要重寫父類的方法墙贱。
繼承方法重寫導(dǎo)致多態(tài)復(fù)雜性热芹,可以通過增加更加基礎(chǔ)的基類,去除原來的繼承關(guān)系惨撇,采用依賴伊脓、聚合或組合的關(guān)系替代。
五魁衙、開閉原則(核心ocp)
【用抽象構(gòu)建框架报腔,用實(shí)現(xiàn)擴(kuò)展細(xì)節(jié)】
提供方的擴(kuò)展開放,使用方修改關(guān)閉剖淀。
批注:新增功能通過擴(kuò)展實(shí)現(xiàn)纯蛾,而不是通過修改實(shí)現(xiàn)。
六纵隔、迪米特方法(最少知道原則:只與直接的朋友通信)
降低類之間的耦合翻诉。
對自己依賴的類知道的越少越好。
批注:對于被依賴的類不管多么復(fù)雜巨朦,都盡量將邏輯封裝在類的內(nèi)部米丘,對外除了提供public方法,不對外泄露任何信息糊啡。
直接的朋友:出現(xiàn)在成員變量拄查、方法參數(shù)、方法返回值中的類棚蓄。出現(xiàn)在局部變量中的類不是直接朋友堕扶。
七、合成復(fù)用原則
盡量使用合成/聚合的方式梭依,而不是使用繼承稍算。
批注:能使用合成或聚合方式實(shí)現(xiàn)的,就不采用繼承方式役拴。
八糊探、總結(jié):設(shè)計(jì)原則核心思想
1)針對接口編程,而不是針對實(shí)現(xiàn)編程
2)把應(yīng)用中可能變化之處河闰,獨(dú)立出來科平,不與不需要變化的代碼混合在一起。
3)為了交互對象之間的松耦合設(shè)計(jì)而努力