我在Java中有一个设计问题。我有Java设计问题:继承多个抽象类
- 一个抽象类
Feature
其表示特征(机器学习),和 - 一个抽象类
Normalizable
从Feature
继承和表示可以被归一化的特征。
具体功能可以是Feature
或Normalizable
的实例。
我想介绍一个名为Probablity
的抽象类,它继承自Feature
并表示可以进行某种概率计算的特征。
实际特征应该是Feature
(不可规范化且不可能)的实例,或者它应该是Normalizable
或或两者的实例。
现在的问题是,实际功能无法从Normalizable
和继承。
我该如何解决这个问题?我认为使用接口不是解决方案,因为所有提到的类都包含实现。
使用接口扩展是来我的心,如果你不能设计一个类结构的唯一解决方案。否则,您可能会转到像策略这样的设计模式,其中所使用的算法/实现的类型必须在运行时确定。 –
它有助于你的班级澄清你的意图。例如,将'Feature'的子类称为'Probability'是没有意义的。最好称它为'ProbabilisticFeature'。为了进一步帮助你,你能找出一些在每个类上都有适当名字的方法吗? –
@ImeshaSudasingha但接口不能有实际的实现。所以我必须在我的实际类中实现实现(实现接口),这会创建大量重复的代码。 – BlackHawk