3

我知道当存在 is-a 关系时使用继承的规则,以及当存在 has-a 关系时使用组合的规则,但是这两个是相互排斥/相互替换的,还是会有一种情况,你应该在同班?

我在 Google 上搜索了很多,但只找到了解释您何时使用每个而不是两者的文章。

谢谢

4

2 回答 2

3

Decorator模式是一个经典示例,其中装饰类由同一类的装饰对象的实例组成,并扩展/实现同一类。

于 2012-12-03T02:34:46.437 回答
1

它们不是相互排斥的。示例:BoatSailboatSailboatis-a Boat,但它有 -a Sail,其他Boats 可能有也可能没有。

于 2012-12-03T02:23:47.440 回答