1. 程式人生 > >面向對象為什麽要多用對象模式而少用繼承模式?

面向對象為什麽要多用對象模式而少用繼承模式?

blog tis tps 總結 template 原來 css 方式 用戶

進來學習java的時候遇到了一些經驗說多用對象模式,少用繼承模式。如今寫一點感想。

面向對象的對象之間的哦和方式有繼承,實現。關聯,依賴,聚合和組合。當中的繼承和實現是繼承這類模式。

說道的一個原因就是代碼汙染。

比如一個父類很復雜。而一個繼承了這個類的子類可能重寫了一部分的方法。可是繼承了所有的方法。用戶在使用繼承的子類的時候可能會調用沒有重寫的父類的方法而且假設這樣的方法是在子類的設計者的意圖之外的操作。那麽子類在繼承父類的時候,能夠覺得不光是繼承到了實用的功能。還繼承到了垃圾功能。父類的代碼汙染到了子類的代碼。

假設採用組合的方法。子類不再繼承父類。而採用關聯或者聚合的方式進行耦合。這樣會產生什麽樣的情況呢?我們首先假設原來的父類的設計是完好合理的。用戶不管怎麽訪問父類,其結果都在父類的設計者的意料之內。如今,子類通過隨意的方式使用父類的功能去完畢一個新的功能。僅僅要保證子類設計的合理,那麽不會額外的須要子類的設計者去關心用戶訪問子類對象的父類的非重寫的方法而產生意外。

總結一下,就是繼承這樣的方式的耦合額外的引入了不須要的功能。因此,添加了子類設計者的關註點和風險。

使用關聯的方式實現耦合,僅僅要保證父類設計合理。子類設計合理,就不會對子類的設計者提出額外的須要。


本文參考:

http://blog.csdn.net/hivon/article/details/583558


面向對象為什麽要多用對象模式而少用繼承模式?