面向对象编程的困境
-
横向关注点:我们很难在不同集成关系的类里共用代码,我们的关注点位于两条继承链的横向切面上。面向对象无法描述两个不同的事物具体某个相同的特性
解决方案:
- copy & paste 相同的代码,这也是坏代码的开头
- 引入一个BaseViewController,会使base成为一个垃圾堆,完全不知道哪些类走了base方法
- 依赖注入:通过外界传入一个带有相同代码的对象
- 多继承:swift没有多继承,其他语言有多继承,这样也会有问题,如果继承的两个类中有两个相同的方法,该类执行该相同方法时应该怎么办,出现菱形缺陷
-
和类不一样,面向协议编程的基础是值类型,不再是引用了,面向协议所提倡的是扁平化和去嵌套的代码
网友评论