1、找出應(yīng)用中可能需要變化的部分,把它們獨(dú)立出來(lái),不要和那些不變的代碼混到一起。
--把會(huì)變化的部分取出并“封裝”起來(lái),好讓其他部分不會(huì)受到影響。代碼變化引起的不經(jīng)意后果變少,系統(tǒng)變得更有彈性。
2、針對(duì)接口編程,而不是針對(duì)實(shí)現(xiàn)編程。
--“針對(duì)接口編程”真正的意思是“針對(duì)超類(lèi)型(super type)編程”。這里所謂的“接口”有多個(gè)含義,接口是一個(gè)“概念”,也可以是一種java的interface構(gòu)造?!搬槍?duì)接口編程”關(guān)鍵是多態(tài)。利用多態(tài),程序可以針對(duì)超類(lèi)型編程,執(zhí)行時(shí)會(huì)根據(jù)實(shí)際情況執(zhí)行真正的行為,不會(huì)被綁死在超類(lèi)型的行為上?!搬槍?duì)超類(lèi)型編程”這句話(huà),可以更明確地說(shuō)成“變量的聲明類(lèi)型應(yīng)該是超類(lèi)型,通常是一個(gè)抽象類(lèi)或者是一個(gè)接口,如此,只要是具體實(shí)現(xiàn)此超類(lèi)型的類(lèi)所產(chǎn)生的對(duì)象,都可以指定給這個(gè)變量。這也意味著,聲明類(lèi)時(shí)不用理會(huì)以后執(zhí)行時(shí)的真正對(duì)象類(lèi)型!”
3、多用組合,少用繼承。
4、為了交互對(duì)象之間的松耦合設(shè)計(jì)而努力
5、類(lèi)應(yīng)該對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉。
6、要依賴(lài)抽象,不依賴(lài)具體類(lèi)。
7、最少知識(shí)原則:只與你的密友談話(huà)。
8、好萊塢原則:別調(diào)用我們,我們會(huì)調(diào)用你。
好萊塢原則給我們一種可以防止“依賴(lài)腐敗”的方法。當(dāng)高層組件依賴(lài)底層組件,而底層組件又依賴(lài)高層組件,而高層組件又依賴(lài)側(cè)邊組件,側(cè)邊組件又依賴(lài)底層組件時(shí),依賴(lài)腐敗就發(fā)生了。在這種情況下,沒(méi)有人會(huì)輕易的懂系統(tǒng)是怎么設(shè)計(jì)的。
在好萊塢原則下,我們?cè)试S底層組件將自己掛鉤到系統(tǒng)上,但是高層組件會(huì)決定什么時(shí)候和怎樣使用低層組件。換句話(huà)說(shuō)就是高層組件對(duì)待低層組件的方式就是“別調(diào)用我們,我們會(huì)調(diào)用你”。
9、一個(gè)類(lèi)應(yīng)該只有一個(gè)引起變化的原因。