一导犹、封裝變化
找出應用中可能需要變化之處唱凯,把它們獨立出來羡忘,不要和那些不需要變化的代碼混在一起谎痢。換句話說,如果每次新的需求一來卷雕,都會使某方面的代碼發(fā)生變化节猿,那么你就可以確定,這部分的代碼需要被抽出來,和其他穩(wěn)定的代碼有所區(qū)分滨嘱。
二峰鄙、多用組合,少用繼承
使用組合建立系統(tǒng)具有很大的彈性太雨,不僅可以將算法族封裝成類吟榴,更可以“在運行時動態(tài)地改變行為”,實現(xiàn)多態(tài)囊扳。繼承吩翻、組合都能達到代碼復用的效果,但用組合能使代碼耦合度更低锥咸。
三狭瞎、針對接口編程,不針對實現(xiàn)編程
“針對接口編程”真正的意思是“針對超類型編程”搏予,這樣才能實現(xiàn)多態(tài)熊锭。超類型可以是父類、抽象類雪侥、接口碗殷。
針對接口編程,可以隔離掉以后系統(tǒng)可能發(fā)生的一大堆改變速缨。如果代碼是針對接口而寫亿扁,那么通過多態(tài),它可以與任何新類實現(xiàn)該接口鸟廓。但是从祝,當代碼使用大量的具體類時,等于是自找麻煩引谜,因為一旦加入新的具體類牍陌,就必須改變代碼,打破開閉原則员咽。
四毒涧、為交互對象之間的松耦合設計而努力
松耦合的設計之所以能讓我們建立有彈性的OO系統(tǒng),能夠應對變化贝室,是因為對象之間的互相依賴降到了最低契讲。
五、開放-關閉原則
類應該對擴展開放滑频,對修改關閉