我在Java中遇到了设计问题。我有
Feature
,代表功能(机器学习)和Normalizable
,它继承自Feature
并表示可以规范化的功能。 具体功能可以是Feature
或Normalizable
的实例。
我想介绍一个名为Probablity
的抽象类,它继承自Feature
并表示可以进行某种概率计算的功能。
实际功能应该是Feature
的实例(不可规范且无概率),或者它应该是Normalizable
或Probability
或两者的实例。
现在的问题是,实际功能无法继承Normalizable
和Probability
。
我该如何解决这个问题?我认为使用接口不是解决方案,因为所有提到的类都包含实现。
答案 0 :(得分:1)
您可以创建课程NormalizablePrbability.java
使用Composition
并将Probability.java
和Normalize.java
作为新创建的课程NormalizablePrbability.java
中的字段。您可以从NormalizablePrbability.java
扩展Feature.java
并覆盖方法,在每种方法中,您都可以提供Probability.java
和Normalize.java
的组合功能。
现在,您可以拥有可以从Feature.java
或Normalize.java
或Probability.java
或NormalizablePrbability.java