10 | 理論七:為何說要多用組合少用繼承?如何決定該用組合還是繼承?

Q 為什么不推薦使用繼承?
A 繼承是面向?qū)ο蟮乃拇筇匦灾? 用來表示類之間的 is-a 關(guān)系, 可以解決代碼復(fù)用的問題. 雖然繼承有諸多作用, 但繼承層次過深, 過復(fù)雜, 也會影響到代碼的可維護(hù)性. 在這種情況下, 我們應(yīng)該盡量少用, 甚至不用繼承

Q 組合相比繼承有哪些優(yōu)勢?
繼承主要有三個(gè)作用:
表示 is-a 關(guān)系, 支持多態(tài)特性, 代碼復(fù)用. 而這三個(gè)作用都可以通過組合, 接口, 委托三個(gè)技術(shù)手段來達(dá)成, 除此之外, 利用組合還能解決層次過深, 過復(fù)雜的繼承關(guān)系影響代碼可維護(hù)性的問題

Q 如何判斷是該用組合還是該用繼承?
A 盡管我們鼓勵(lì)多用組合少用繼承, 但是組合也并不是完美的, 繼承也并非一無是處. 在實(shí)際的項(xiàng)目開發(fā)中, 我們還是要根據(jù)具體的情況,來選擇該用繼承還是組合. 如果類之間的繼承結(jié)構(gòu)穩(wěn)定, 層次比較淺, 關(guān)系不復(fù)雜, 我們就可以大膽的使用繼承. 反之, 我們就應(yīng)該使用組合來替代繼承. 除此之外 還有一些設(shè)計(jì)模式, 特殊的應(yīng)用場景, 會固定使用組合 或者繼承

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容