不恰當的使用繼承導致的最大的乙個特徵就是高耦合。是否使用繼承需要考慮三個點:
父類只是給子類提供服務,並不涉及子類的業務邏輯
層級關係明顯,功能劃分清晰,父類和子類各做各的。
父類的所有變化,都需要在子類中體現,也就是說此時耦合已經成為需求
萬不得已不要用繼承,優先考慮組合等方式。如果只是出於**復用的目的而不區分類別和場景,就採用繼承是不恰當的。當你發現你的繼承超過 2 層的時候,你就要好好考慮是否這個繼承的方案了,第三層繼承正是濫用的開端。
使用場景:
父類有部分public的方法是不需要,也不允許子類覆重
父類有一些特別的方法是必須要子類去覆重的,在父類的方法其實是個空方法
父類有一些方法是可選覆重的,一旦覆重,則以子類為準
父類有一些方法即便被覆重,父類原方法還是要執行的
通常帶來的問題:
解決方案:
在決定是否採用多型時,要有乙個清晰的角色概念,做好角色細分,不要角色混亂。
將相關的一堆函式和一堆物件放在一起,只留給外部程式設計師操作方式,而不暴露具體執行細節。帶來的問題:
制約了並行程度
資料部分就是資料部分,執行部分就是執行部分,不同類的東西放在一起是不合適的
casatwy & 跳出物件導向思想(一) 繼承
跳出物件導向思想(二) 多型
跳出物件導向思想(三) 封裝
ios架構師之路:慎用繼承
iOS 物件導向
主要內容 nonatomic strong 等 property 的修飾符 public private 等訪問控制符 assign 簡單賦值,不更改對所賦的值的引用計數。主要適用於nsinteger等基礎型別,以及short float double 結構體等c資料型別。retain 使用reta...
ios之Objective c物件導向程式設計測試
import inte ce person nsobject void create nsstring name float weight void eat int cnt void walk int num end implementation person void create nsstrin...
IOS學習之OC物件導向 封裝
一 物件導向和封裝 物件導向的三大特性 封裝 成員變數 繼承和多型 在oc語言中,使用 inte ce 和 implementation 來處理類。inte ce就好像暴露在外面的時鐘表面,像外界提供展示以及介面。implementation就好像隱藏在時鐘內部的構造實現,把具體的實現封裝了起來。二...