Oop 类层次结构的组合爆炸
我有一个只在某些属性上不同的类层次结构,我想创建一个类层次结构的组合(如uml图片),它可以导致分解层次结构。 这个设计有什么解决方案吗?它类似于装饰器模式,但基于属性而不是行为。是否可以使用decorator作为继承的替代方法?这是可能的。 您需要做的是反转此层次结构的依赖关系。在支持接口的语言中(如c#),您可以创建这些结构并将其组合以提供此行为 “组合”将由继承组合类并实现子类1(接口)和子类2(接口)的基类装饰。将基类视为装饰器。检查C#中的装饰图案Oop 类层次结构的组合爆炸,oop,inheritance,design-patterns,Oop,Inheritance,Design Patterns,我有一个只在某些属性上不同的类层次结构,我想创建一个类层次结构的组合(如uml图片),它可以导致分解层次结构。 这个设计有什么解决方案吗?它类似于装饰器模式,但基于属性而不是行为。是否可以使用decorator作为继承的替代方法?这是可能的。 您需要做的是反转此层次结构的依赖关系。在支持接口的语言中(如c#),您可以创建这些结构并将其组合以提供此行为 “组合”将由继承组合类并实现子类1(接口)和子类2(接口)的基类装饰。将基类视为装饰器。检查C#中的装饰图案 另一个选项是根本不使用装饰器,将基类
另一个选项是根本不使用装饰器,将基类、ChidClass1、2和3作为接口 您可以使用接口+组合+委派,而不是扩展。维基百科关于组合而非继承的页面有一些很好的例子:但这取决于你所说的语言。有些语言有更优雅的解决方案来解决这个问题(比如Go的自动委托给组合对象,Scala的Traits,Ruby的mixin等等)。为什么不把所有字段放在一个数据结构中,让客户端读取他们需要的内容呢?没有行为就没有多态性,因此不需要继承或组合。