gpt4 book ai didi

用于加载对象的 Java 接口(interface)

转载 作者:行者123 更新时间:2023-11-30 04:46:25 25 4
gpt4 key购买 nike

我需要从文件加载对象。我不知道如何设计支持此操作的类的接口(interface)。

public interface TestComponent {
TestComponent loadFromXML(Element _xmlElement);
}

我无法将方法 loadFromXML 设为静态,并且无法声明(而不是定义!)构造函数 -但是创建一个仅用于调用 loadFromXML 的类是相当难看的。将那些在 switch-case 中调用指定构造函数的实用程序类中的机制分开也是丑陋的。

在这种情况下你如何设计界面?我应该使用抽象类吗?

最佳答案

我同意你问题中的版本看起来有点不自然。

以下是一些替代方案:

  1. 您可以将 void load(...) 添加到 TestComponent 接口(interface),该接口(interface)将使用 XML 中的状态加载“this”对象。 (这类似于 java.util.Properties 上的 loadloadXML 方法。)
  2. 您可以在每个 TestComponent 实现类中定义一个构造函数,用于解析 XML 以获取对象的初始状态。
  3. 您可以创建一个静态辅助方法。
  4. 您可以创建一个 TestComponentFactory 接口(interface),该接口(interface)具有返回加载对象的 TestComponent load(...) 方法。

不同的方法各有优点和缺点。例如,工厂对象方法 (4.) 将解析/加载逻辑与 TestComponent 类分开,但需要额外的类和接口(interface)。另一方面,如果您有主接口(interface)的多个实现,那么其他三种方法往往会很麻烦。主要问题是您不能使用 Java 中的构造函数进行多态性。

最后,如果我设计这个,我会让 load(...) 方法采用流或读取器作为参数,并自行进行 XML 解析(通过调用相关库)代码)。这样您就可以在一个地方处理所有这些事情(每个 TestComponent 实现类)。

关于用于加载对象的 Java 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10852578/

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