第3章 軟件的可維護(hù)性和可復(fù)用性
3.1
真正的原因:
過于僵硬;過于脆弱;復(fù)用率低;黏度過高
設(shè)計(jì)目標(biāo):
可擴(kuò)展性;靈活性;可插入性
3.2
在面向?qū)ο蟮脑O(shè)計(jì)里面,可維護(hù)性復(fù)用是以設(shè)計(jì)原則和設(shè)計(jì)模式為基礎(chǔ)的
設(shè)計(jì)原則:
“開-閉”原則
里氏代換原則
依賴倒轉(zhuǎn)原則
接口隔離原則
組合/聚合復(fù)用原則
迪米特法則
第4章 “開-閉”原則(OCP)
4.1
“開-閉”原則:一個(gè)軟件實(shí)體應(yīng)當(dāng)對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。
即,在設(shè)計(jì)一個(gè)模塊的時(shí)候,應(yīng)當(dāng)使這個(gè)模塊可以在不被修改的前提下被擴(kuò)展。換言之,應(yīng)當(dāng)可以在不必修改源代碼的情況下改變這個(gè)模塊的行為。
4.2
抽象是關(guān)鍵
對(duì)可變性的封裝原則:
1)一種可變性不應(yīng)當(dāng)散落在代碼的很多角落里,而應(yīng)當(dāng)被封裝到一個(gè)對(duì)象里面。
繼承應(yīng)當(dāng)被看做是封裝變化的方法,而不應(yīng)當(dāng)被認(rèn)為是以一般的對(duì)象生成特殊的對(duì)象的方法。
2)一種可變性不應(yīng)當(dāng)與另一種可變性混合在一起。
4.3
里氏代換原則:
任何基類可以出現(xiàn)的地方,子類一定可以出現(xiàn)。
依賴倒轉(zhuǎn)原則:
要依賴于抽象,不要依賴于實(shí)現(xiàn)。
合成/聚合復(fù)用原則:
要盡量使用合成/聚合,而不是繼承關(guān)系達(dá)到復(fù)用的目的。
迪米特法則:
一個(gè)軟件實(shí)體應(yīng)當(dāng)與盡可能少的其他實(shí)體發(fā)生相互作用。
接口隔離原則:
應(yīng)當(dāng)為客戶端提供盡可能小的單獨(dú)的接口,而不要提供大的總接口。
4.4
*
4.5
*
4.6
“將條件轉(zhuǎn)移語句改寫成為多態(tài)性”?
如果一個(gè)條件轉(zhuǎn)移語句確實(shí)封裝了某種商務(wù)邏輯的可變性,那么將此種可變性封裝起來就符合“開-閉”原則設(shè)計(jì)思想了。