Swift 类型选择与扩展功能全解析
1. 类层次结构的弊端与应对策略
类层次结构的最大缺点是复杂性。当存在复杂的层次结构时,进行更改很容易,却难以意识到这会对所有子类产生怎样的影响。例如,在狗和猫的类中,若想在四足动物类中添加 furColor 属性来设置动物毛发颜色,但马没有毛发而是鬃毛,所以在对类层次结构中的类进行更改之前,需要充分理解其对所有子类的影响。
在 Swift 中,除非有特定原因,否则最好避免使用复杂的类层次结构,而采用面向协议的方法。
2. 动态调度与性能优化
在使用类继承时,选择调用哪个实现的过程是在运行时进行的,这被称为动态调度。这意味着使用类继承会带来一定的运行时开销,对于大多数应用来说,这种开销可能无关紧要,但对于对性能敏感的应用(如游戏),这种开销可能会很大。
可以使用 final 关键字来减少与动态调度相关的开销。 final 关键字可以限制类、方法或函数,使其不能被重写(对于方法或函数)或子类化(对于类)。示例代码如下:
final func myFunc() {}
final var myProperty = 0
final class MyClass {}
若要限制子类重写 walking() 方法和 numberOfLegs 属性,可以这样实现 Animal 类:
超级会员免费看
订阅专栏 解锁全文
873

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



