面向对象编程与面向协议编程的对比与实践
1. 面向对象编程的不足
在进行编程设计时,面向对象编程(OOP)是一种常用的方法,但它也存在一些明显的缺点。以下是面向对象编程在设计车辆类型时出现的问题:
- 单一继承导致的问题 :由于 Swift 是单继承语言,面向对象设计可能会导致超类臃肿。因为可能需要在超类中包含仅少数子类需要的功能,同时子类还会继承一些它并不需要的功能。
- 常量设置问题 :无法在超类中创建能被子类设置的常量。在设计中,有些属性希望在子类的初始化器中设置,之后不再改变,但在一个类中定义的常量不能在其子类中设置。
- 访问控制问题 :不能将属性或方法设置为仅该类型的子类可访问。为了解决这个问题,使用 fileprivate 访问控制,即只有在同一源文件中定义的代码才能访问这些属性,但这并不是一个理想的解决方案,因为可能不希望将所有子类和超类放在同一个源文件中。
2. 面向协议编程的基础概念
2.1 设计起点的差异
面向协议编程(POP)与面向对象编程在设计起点上有很大不同。在面向对象设计中,通常从超类开始,超类成为设计的核心,所有子类继承超类的功能和属性。而在面向协议设计中,从协议开始,协议和协议扩展是设计的重点。
2.2 面向协议编程的关键技术
面向协议编程使用了三种关键技术,使它与面向对象编程有显著区别:
- 协议继承 :一个协议可以继承一个或多个其他协议的要求。这类似于面
超级会员免费看
订阅专栏 解锁全文

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



