🌘 何時人們傾向於組合而非繼承?
➤ 追溯軟體設計名言的起源與演變
✤ https://www.sicpers.info/2025/11/when-did-people-favor-composition-over-inheritance/
這篇文章探討了「傾向組合而非繼承」這句軟體設計名言的起源與深層含義。作者追溯了此觀點在《設計模式》一書中的出處,並分析了早期物件導向語言(如 Smalltalk)與較新語言(如 Java)在封裝和存取權限上的差異。文章闡述了繼承的「白盒」重用方式(編譯時期綁定,較難更改)與組合的「黑盒」重用方式(執行時期綁定,易於更改)的區別,並指出組合能提供更高的彈性,允許在執行時期更換物件行為。同時,文章也結合了 Liskov 和 Wing 提出的子類型關係概念,探討了為何組合能讓設計者在不拘泥於嚴格的類型層級下實現多型。最後,作者也提及了其他替代方案,如使用一等公民的程序(如 Lambda 函數),指出「組合優於繼承」並非唯一解。
+ 這篇文章的分析很到位,終於理解了這句口號背後的歷史脈絡和技術考量。
+ 感謝作者點出「組合優於繼承」並非萬靈
#軟體設計