gpt4 book ai didi

java继承和设计模式建议

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:59:42 25 4
gpt4 key购买 nike

我在 Android 中做一个可以运行不同 ML 模型的应用程序,我想创建一些类来表示结果的数据,每个 ML 模型都有自己的变量/结果,例如,分类问题同时有标签其他的没有。

我想在 java 中使用继承并做类似 Result 的事情作为 ClassificationResultRegresionResult 的接口(interface)和父亲,所以我可以这样做:

Arraylist<Result> resultList;
ClassificationResult cr = new ClassificationResult...
RegresionResult rr = new RegresionResult...
resultList.add(cr)
resultList.add(rr)

但我面临的问题是我无法从子项中调用方法,例如 ClassificationResult.getLabels()(我可以在界面中拥有所有子项的所有方法,但对我来说这似乎很奇怪)

我看到了一些模式,Factory 和 Builder,但我遇到了前面描述的工厂模式和 Builder(所有变量都在一个类中)的问题,其中大部分都不会被初始化。

我会很感激关于我应该如何设计这个的一些想法

最佳答案

If it looks like a duck and quacks like a duck but it needs batteries, you probably have the wrong abstraction.

(在互联网上搜索此短语并阅读您会找到的文章。)

换句话说,当您不知道如何区分对象时,请不要将它们视为单个接口(interface)的不同规范。

除非你实现了一个低级框架,如果你想使用 instanceof,或者 - 更好地说 - 如果使用 instanceof 是区分你的唯一方法对象,很可能您的设计从一开始就是错误的。

而是想想你的对象真正有什么共同点。仅当您找到任何东西时,才将其设为接口(interface)方法并让您的每个对象实现它。

如果您是动物学家,您可以将 视为单个接口(interface)的子类型。如果你是盲人,需要 guide dog ,那么这两个是完全不同的类。

关于java继承和设计模式建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58058810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com