複合優於繼承(16)

一、實現代碼複用的有力手段,但並不是永遠是完成這項工做的最佳工具安全

二、對於專門爲了繼承而設計的類、具備好的文檔,使用繼承是很是安全的框架

  • 普通類挎包繼承是很危險的
  • 本條目不適用於接口

三、與方法調用不一樣,繼承打破了封裝性工具

四、子類脆弱的緣由:超類在後續版本中得到新的方法性能

五、在新的類中添加一個私有域,引用現有類的一個實例設計

  • 這種方法叫組合(複合)
  • 新類中的全部方法均可以調用該實例,並返回他的方法:即轉發
  • 新類中的這種方法叫轉發方法
  • 這樣獲得的類很是穩固,不依賴現有類的實現細節

六、包裝類沒什麼缺點,但不適合回調框架繼承

  • 包裝類在轉發方法調用的性能上和內存佔用上都不會有很大的影響
  • 包裝類不只比子類更加健壯,功能更增強大

七、只有子類真正是超類的子類型時,才適合用繼承接口

  • 只有二者是「is-a」 的關係時

八、組合本質上,A僅僅是B的實現細節內存

  • 在該使用複合的地方使用繼承,會暴露過多實現細節
  • 客戶端訪問會致使語義混淆

九、若是你正在擴展的類有缺陷文檔

  • 繼承使得超類全部缺陷擴展到子類中
  • 複合容許設計心得API 來隱藏這些缺陷
相關文章
相關標籤/搜索