优先考虑组合/聚合,而不是继承
代码的演进过程
针对《设置》和《发现》中table view的代码逻辑
起初我是这样写的

后来我是这样写的

现在我是这样写的

为何要这样做
大家都知道面向对象中继承的各种优点,所以选择了使用继承(不多说)
但是继承相比较组合依然存在缺点
- 单一继承
- 不够灵活
- 耦合严重
- 代码量大
- 破坏封装
- 静态类型
题外话
从上面代码的演变可以看到table view的很多代理方法都是相同的逻辑,并不是我们需要关心的。
非常赞同@巍哥说的view controller中占据篇幅的并不是table view的代理,而是数据的构建。
所以,我才觉得更应该把table view的代理拿到外面,而把大家关心的数据构建保留在view controller中。
网友评论