继承和组合的缺点
在开发工作中,继承总是用来在多个类之间共享代码。
设想一个场景,一个人类,可以说话和睡觉,而一个Worker,除了上述功能,还可以工作。
解决方案很简单,我们可以 Person 和 Worker 之间建立继承关系:
class Person {
func say() {
print("hello")
}
func sleep() {
print("I'm sleeping")
}
}
class Worker: Person {
func work() {
print("I'm carrying bricks")
}
}
在随后的开发中,可能一个新的类型 Robot,也可以工作了,这个时候我们不能使用 Worker 了,因为很明显, Robot不可能同时是一个Person。
解决这个问题,我们可能尝试组合的方式,通过公共类管理 work 行为:
class WorkManager {
func work() {
print("I'm carrying bricks")
}
}