多重繼承(MI)是一個程式設計概念,允許一個類別從多個父類別繼承。雖然它看起來是一種組合功能的便捷方法,但它常常會導致維護噩夢。
1.組合優於繼承:
盡量考慮使用組合而不是繼承。組合可讓您組合具有不同功能的對象,而不會產生 MI 的複雜性。
2.恐懼鑽石:
MI 可以創造「恐懼鑽石」場景,其中一個類別繼承自兩個繼承自共同祖先的類別。這可能會導致方法解析中的歧義和衝突。
3.虛擬繼承的歧義:
在物件層次結構中,理想的繼承圖應該是樹,而不是圖。從共享相似方法的多個介面繼承時,MI 可能會產生歧義。
儘管有缺點,MI 在某些情況下可能是合適的:
1.不相關的類:
如果所討論的類別完全不相關並且服務於不同的目的,那麼MI 可以簡化實作。
2.私有繼承:
私有繼承可用於實現實現細節,而無需將其公開,從而降低與 MI 相關的風險。
3. C 慣用法:
一些 C 慣用法,例如策略,利用 MI 來實現特定的設計目標。
雖然 MI 是一個方便的選項,但應該使用它謹慎行事。大多數時候,組合或單一繼承是首選,以避免與 MI 相關的複雜性和陷阱。準備好在程式碼審查中捍衛您對 MI 的使用,並儘可能考慮替代方法。
以上是我應該避免程式碼中的多重繼承嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!