QWAN(無(wú)名的質(zhì))、Gate(門)、Way(道)
利用道從門演化成質(zhì),就是采用一定的模式利用一種語(yǔ)言達(dá)到軟件的完美。
無(wú)名天地之始,有名萬(wàn)物之母。
名是死的混沌。
道生一,一生二,二生三,三生萬(wàn)物。萬(wàn)物負(fù)陰而抱陽(yáng),沖氣以為和。
氣聚而有其形,氣散而歸于無(wú)形。
《老子》:善為士者不武。--好的設(shè)計(jì)師不會(huì)在他設(shè)計(jì)的系統(tǒng)中再做
大規(guī)模的修改。
《老子》:天下有道,卻走馬以糞;天下無(wú)道,戎馬生于效。
開(kāi)閉原則:對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉。--抽象化是關(guān)鍵,對(duì)可變性進(jìn)行封裝。
《太玄》:知固而不知革,物失其則;知革而不知固,物失其均。
所有類圖的繼承結(jié)構(gòu)都不會(huì)超過(guò)兩層,否則就會(huì)失去對(duì)于可變性的封裝原則,就會(huì)在一個(gè)封裝內(nèi)含有多個(gè)可變?cè)亍?br />
里式代換原則:任何基類可以出現(xiàn)的地方,子類一定可以出現(xiàn)。
依賴倒轉(zhuǎn)原則:要依賴與抽象,不要依賴與實(shí)現(xiàn)。
合成/聚合復(fù)用原則:要盡量使用合成和聚合,少使用繼承。
迪米特法則:一個(gè)軟件實(shí)體應(yīng)該盡可能少的與其他實(shí)體發(fā)生相互作用。
接口隔離原則:應(yīng)當(dāng)為client提供盡可能小的單獨(dú)的接口,而不是提供大的總的接口。
可插拔性的關(guān)鍵在于存在一個(gè)接口,以及每個(gè)構(gòu)件都實(shí)現(xiàn)了這個(gè)接口。
應(yīng)當(dāng)優(yōu)先使用接口實(shí)現(xiàn)抽象類型。
抽象類是用來(lái)繼承的,具體類不是用來(lái)繼承的。
抽象類應(yīng)該具有盡可能多的共同代碼,應(yīng)當(dāng)具有盡可能少的數(shù)據(jù)。
類之間的繼承是很容易被濫用的復(fù)用工具。
防止繼承濫用的原則:
- 區(qū)分has-a和is-a的區(qū)別
- 子類有擴(kuò)展超類的責(zé)任,而不是替換掉
- 不要從工具類繼承
posted on 2006-06-09 02:34
rd2pm 閱讀(656)
評(píng)論(0) 編輯 收藏 所屬分類:
java language 、
system design