面向對象的設計原則(一)

優先考慮組合/聚合,而不是繼承

代碼的演進過程

針對《設置》和《發現》中table view的代碼邏輯
起初我是這樣寫的


起初

后來我是這樣寫的


后來

現在我是這樣寫的


現在

為何要這樣做

大家都知道面向對象中繼承的各種優點,所以選擇了使用繼承(不多說)
但是繼承相比較組合依然存在缺點

  • 單一繼承
  • 不夠靈活
  • 耦合嚴重
  • 代碼量大
  • 破壞封裝
  • 靜態類型

題外話

從上面代碼的演變可以看到table view的很多代理方法都是相同的邏輯,并不是我們需要關心的。
非常贊同@巍哥說的view controller中占據篇幅的并不是table view的代理,而是數據的構建。
所以,我才覺得更應該把table view的代理拿到外面,而把大家關心的數據構建保留在view controller中。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容