53.scala编程思想笔记——组合
欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50447606
源码下载连接请见第一篇笔记。
继承描述的是 “是一个”关系。
特征表示的是一种能力。
最基础的关系不是继承,也不是特征,而是组合。
例如,这栋房子有两间厨房,如下:
trait Building
trait Kitchen
trait House extends Building {
valkitchen1:Kitchen
valkitchen2:Kitchen
}
优先选择组合而不是继承。
组合会产生更为简单的设计和实现,并不表示应该尽力回避使用继承和混合。
一方面不能继承同一个特征两次,此外组合可以使拥有多项物品(不同种类)变得很容易。在继承特征时,是无法表示要继承多次的。