non*_*com 4 architecture oop inheritance scala composition
在Scala编程中,第239页,第一段说:
组合和继承是根据另一个现有类定义新类的两种方法.如果你所追求的主要是代码重用,你通常应该更喜欢组合继承.只有继承会受到脆弱的基类问题的困扰,在这个问题中,你可以通过更改超类来无意中破坏子类.
对我来说还不清楚.任何人都可以展示这种情况的一个例子,最好有一些代码吗?
hui*_*ker 7
在脆弱的基类问题是一般于支持继承的所有系统.这意味着对超类型(您继承的类)的更改可以获得意想不到的结果:更改会使您在基类上打破您的假设.请参阅此相关SO问题以获取解释和示例.
相比之下,Scala将父类的后添加输出到外部独立特征,您可以使用Mixin Composition将其添加到子类型.请参阅此示例,并将" RichIterator"视为您希望在基础上生成的更改AbsIterator(一旦定义).看看mixin如何不改变父类的任何内容,但仍然可以在子类型中轻松重用?
RichIterator
AbsIterator
归档时间:
14 年,1 月 前
查看次数:
226 次
最近记录:
13 年,10 月 前