1、面向對象實用原則
(1)關閉原則:新功能不需要修改原類,只需要增加新類。
(2)松耦合原則:處理互相依賴,可以使用中間人的方法,讓所有類關聯於中間人(接口、代理人)。
繼承是強關聯,容易不便於維護。父類一旦修改,子類容易出問題。
案例1:消除類間的依賴關係
![「算法基礎」編程常見模式](http://p2.ttnews.xyz/loading.gif)
優化過程,1增加接口,2將實例化過程放在類的外部完成。
![「算法基礎」編程常見模式](http://p2.ttnews.xyz/loading.gif)
實際使用中,利用了泛化的思想。
案例2:A不能繼承B,但是可以重用B的功能。
創建代理方法。
2、單例模式
不建議直接學習設計模式,有項目經驗後再去看
讓類只能創建一個實例,避免創建多個實例。
主代碼中的實例化會錯誤,因為我們在T類中初始化了類。通過取得實例方法取得實例
也可以採用靜態塊的寫法
單例模式拓展為少例模式,可以用列表的方式,或者建立T1,T2這樣的思路。
3、組合與聚合
通過實線虛線也可以看出來強弱關係。不恰當的例子,戰士和心臟是組合關係,戰士死了心臟也停止了;戰士和步槍是聚合關係,戰士死了,步槍還能繼續用。
鴨子和貓都繼承動物,鴨子的游泳功能實現了游泳接口。
案例:動態數組中只能加入2個同類型字符串
完善arrayList功能
繼承框架:
組合框架:
聚合框架:
利用外部接口注入
閱讀更多 學點乾貨 的文章