3、面向对象编程与面向协议编程:对比与实践

面向对象编程与面向协议编程:对比与实践

1. 面向对象设计的弊端

在之前的面向对象设计中,存在一些明显的问题,这些问题会影响代码的质量和可维护性。具体如下:
- 单一继承导致的臃肿超类 :Swift 是单继承语言,在面向对象设计里,超类可能会包含一些仅部分子类需要的功能,从而导致超类变得臃肿。
- 不必要的功能继承 :由于单继承,子类可能会继承一些自身并不需要的功能,增加了代码的复杂性。
- 无法定义可被子类设置的常量 :在超类中定义的常量无法在子类中设置,这限制了代码的灵活性。
- 无法精确控制访问权限 :难以将属性或方法设置为仅特定子类可访问,使用 fileprivate 访问控制并非理想解决方案,因为我们可能不想将所有子类和超类放在同一个源文件中。

2. Swift 作为面向协议的编程语言

面向协议的设计与面向对象设计有很大不同。在面向对象设计中,我们从超类开始,超类成为设计的核心,所有子类继承其功能和属性。而在面向协议设计中,我们从协议开始,协议和协议扩展是设计的重点。面向协议编程使用了三种重要技术:
- 协议继承 :一个协议可以继承一个或多个其他协议的要求,类似于面向对象编程中的类继承,但继承的是要求而非功能。在 Swift 中,协议可以继承多个协议的要求,例如 LandVehicle SeaVehicle AirVeh

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值