【发布时间】:2020-06-19 01:25:04
【问题描述】:
我有一个仅在某些属性上有所不同的类层次结构,我想创建由类层次结构组合而成的类(如 uml 图片),这可能导致层次结构爆炸。 这个设计有什么解决方案吗?它就像装饰器模式,但在属性而不是行为上。是否可以使用装饰器代替继承
【问题讨论】:
-
您可以使用 Interfaces+Composition+Delegation 而不是 extends。 Wikipedia 的关于“组合优于继承”的页面有一些很好的例子:en.wikipedia.org/wiki/Composition_over_inheritance 但这有点取决于你在说什么语言。一些语言有更优雅的解决方案来解决这个问题(比如 Go 对组合对象的自动委托,或 Scala 的 Traits,或 Ruby 的 Mixins 等)。
-
为什么不将所有字段放在一个数据结构中,让客户读取他们需要的内容?没有行为就没有多态性,因此不需要继承或组合。
标签: oop inheritance design-patterns