1.1單一職責(zé)原則
案例1:將不區(qū)分類屬性與行為的類个粱,如IUserInfo接口拆分為BO古毛,BIZ兩個(gè)接口。需要使用BO都许,就將接口對(duì)象轉(zhuǎn)換為具體的接口稻薇。
定義:?jiǎn)我宦氊?zé)原則(SRP,Single Responsibility Principe)的定義是:應(yīng)該有且僅有一個(gè)原因引起類的變更胶征。
案例2:電話撥號(hào)類的劃分
單一職責(zé)原則的優(yōu)勢(shì):類的復(fù)雜性降低了塞椎,可讀性增加,可維護(hù)性提高睛低,變更引起的風(fēng)險(xiǎn)降低
注意 單一職責(zé)原則提出了一個(gè)編寫程序的標(biāo)準(zhǔn)案狠,用“職責(zé)”或“變化原因”來衡量接口或類設(shè)計(jì)得是否優(yōu)良蹬敲,但是“職責(zé)”和“變化原因”都是不可度量的,因項(xiàng)目而異莺戒,因環(huán)境而異伴嗡。
案例3:高粒度的“修改用戶信息方法”!
與現(xiàn)實(shí)的妥協(xié):
1.2里氏替換原則
OO中繼承的優(yōu)點(diǎn):代碼共享瘪校,減少了創(chuàng)建類的工作量;提高了代碼的重用性名段;子類與父類有相似也有不同阱扬;提高了代碼的可擴(kuò)展性,比如版本升級(jí)產(chǎn)生的向下兼容伸辟;提高了產(chǎn)品與項(xiàng)目的開放性麻惶;
OO中繼承的缺點(diǎn):繼承是侵入性的,只要繼承必須擁有父類的屬性與方法信夫;繼承也是子類的約束窃蹋,降低了代碼的靈活性;繼承增加了父類子類的耦合性静稻,當(dāng)父類修改變量或方法時(shí)警没,要考慮子類的修改
里氏替換原則的定義:所有引用基類的地方必須能透明地使用其子類的對(duì)象
定義包含的四層規(guī)范:
第一,子類必須完全實(shí)現(xiàn)父類的方法
第二振湾,子類出現(xiàn)的地方并不一定可以被父類替換杀迹。
第三,子類方法可以放大參數(shù)范圍
第四押搪,子類方法可以縮小返回值范圍
里氏替換原則的優(yōu)點(diǎn):增加程序的健壯性树酪,版本升級(jí)時(shí)仍有很好的兼容性;即使增加了子類大州,原有類也可以繼續(xù)運(yùn)行续语;在實(shí)際項(xiàng)目中,每個(gè)子類對(duì)應(yīng)不同的業(yè)務(wù)含義摧茴,使用父類作為參數(shù)绵载,傳遞不同的子類完成不同的業(yè)務(wù)邏輯