面向对象编程与面向协议编程:对比与实践
1. 面向对象设计的弊端
在之前的面向对象设计中,存在一些明显的问题,这些问题会影响代码的质量和可维护性。具体如下:
- 单一继承导致的臃肿超类 :Swift 是单继承语言,在面向对象设计里,超类可能会包含一些仅部分子类需要的功能,从而导致超类变得臃肿。
- 不必要的功能继承 :由于单继承,子类可能会继承一些自身并不需要的功能,增加了代码的复杂性。
- 无法定义可被子类设置的常量 :在超类中定义的常量无法在子类中设置,这限制了代码的灵活性。
- 无法精确控制访问权限 :难以将属性或方法设置为仅特定子类可访问,使用 fileprivate 访问控制并非理想解决方案,因为我们可能不想将所有子类和超类放在同一个源文件中。
2. Swift 作为面向协议的编程语言
面向协议的设计与面向对象设计有很大不同。在面向对象设计中,我们从超类开始,超类成为设计的核心,所有子类继承其功能和属性。而在面向协议设计中,我们从协议开始,协议和协议扩展是设计的重点。面向协议编程使用了三种重要技术:
- 协议继承 :一个协议可以继承一个或多个其他协议的要求,类似于面向对象编程中的类继承,但继承的是要求而非功能。在 Swift 中,协议可以继承多个协议的要求,例如 LandVehicle 、 SeaVehicle 和 AirVeh
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



