我知道当存在 is-a 关系时使用继承的规则,以及当存在 has-a 关系时使用组合的规则,但是这两个是相互排斥/相互替换的,还是会有一种情况,你应该在同班?
我在 Google 上搜索了很多,但只找到了解释您何时使用每个而不是两者的文章。
谢谢
我知道当存在 is-a 关系时使用继承的规则,以及当存在 has-a 关系时使用组合的规则,但是这两个是相互排斥/相互替换的,还是会有一种情况,你应该在同班?
我在 Google 上搜索了很多,但只找到了解释您何时使用每个而不是两者的文章。
谢谢
Decorator
模式是一个经典示例,其中装饰类由同一类的装饰对象的实例组成,并扩展/实现同一类。
它们不是相互排斥的。示例:Boat
和Sailboat
。Sailboat
is-a Boat
,但它有 -a Sail
,其他Boat
s 可能有也可能没有。