設(shè)計(jì)原則:
多用組合,少用繼承。
使用組合建立系統(tǒng)具有很大彈性,不僅可將算法族封裝成類,更可以“在運(yùn)行時(shí)動(dòng)態(tài)改變行為”,只要組合的行為對(duì)象符合正確的接口標(biāo)準(zhǔn)即可。封裝變化
找出應(yīng)用中可能需要變化之處,把它們獨(dú)立出來,不要和那些不需要變化的代碼混在一起。針對(duì)接口編程,不對(duì)實(shí)現(xiàn)編程
“針對(duì)接口編程”真正的意思是“針對(duì)超類型編程”。
關(guān)鍵在于多態(tài),利用多態(tài),程序可以針對(duì)超類型編程,執(zhí)行時(shí)會(huì)根據(jù)實(shí)際情況執(zhí)行到真正的行為,不會(huì)被綁死在超類型的行為上。變量的聲明類型應(yīng)該是超類型,通常是一個(gè)抽象類或者是一個(gè)接口,如此,只要是具體實(shí)現(xiàn)此超類型的類所產(chǎn)生的對(duì)象,都可以指定給這個(gè)變量。這也意味著,生命類時(shí)不用理會(huì)以后真正執(zhí)行的對(duì)象類型。
設(shè)計(jì)模式:策略模式
定義:策略模式定義了算法族,分別封裝起來,讓它們之間可以互相替換,此模式讓算法的變化獨(dú)立于使用算法的客戶。
要點(diǎn):
- 知道OO基礎(chǔ),并不足以讓你設(shè)計(jì)出良好的OO系統(tǒng)
- 良好的OO設(shè)計(jì)必須具備可服用,可擴(kuò)充,可維護(hù)的特性
- 模式可以讓我們建造出具有良好OO設(shè)計(jì)質(zhì)量的系統(tǒng)
- 模式被認(rèn)為是歷經(jīng)驗(yàn)證的OO設(shè)計(jì)經(jīng)驗(yàn)
- 模式不是代碼,而是針對(duì)設(shè)計(jì)問題的通用解決方案。
- 模式不是被發(fā)明,而是被發(fā)現(xiàn)。
- 大多數(shù)的模式和原則,都著眼于軟件變化的主題。
- 大多數(shù)的模式都允許系統(tǒng)局部改變獨(dú)立于其他部分。
- 我們常把系統(tǒng)重會(huì)變化的部分抽出來封裝。
- 模式讓開發(fā)人員之間有共享的語言,能夠最大化溝通的價(jià)值。