gpt4 book ai didi

java - Java中的继承问题

转载 作者:行者123 更新时间:2023-11-30 07:38:02 24 4
gpt4 key购买 nike

我在数据库中有 5 个不同的表。我写了一个抽象的“Converter.java”类,它从数据库中取出数据并将其转换为“tree.xml”文件。

树.xml

<?xml version="1.0" standalone="no"?>
<tree>
<declarations>
<attributeDec1 name="name" type="String"/>
</declarations>

<branch>
<attribute name="name" value="process 1"/>

<leaf>
<attribute name="name" value="process 2"/>
</leaf>

<leaf>
<attribute name="name" value="process 3"/>
</leaf>
</branch>
</tree>

您可以猜到,上述 tree.xml 的结构对于所有 5 个表都将保持不变。唯一的区别在于属性“值”的值。

要获取该“值”属性的值,转换器首先必须查询数据库以获取这些值。

因此,对于 5 个不同的表应该有 5 个不同的查询。因此,我没有编写 5 个不同的转换器,而是制作了一个具有类似功能的单个“Converter.java”

  • openTree()
  • 关闭树()
  • 打开分支()
  • 关闭分支()
  • openLeaf()
  • 关闭叶子()
  • 添加属性()

在上述方法中,我已经实现了除 addAttribute() 方法之外的所有方法,因为它的实现取决于表。

在那之后,我编写了 5 个不同的转换器,每个转换器用于一个表,并且所有转换器都扩展了“Converter.java”

我在 Converter.java 类中创建了一个名为“query”的字段。由于该字段由所有 5 个转换器继承,因此我已在这 5 个转换器的构造函数中初始化了该字段。

现在我的问题如下:

问。我不确定我是否正确使用了继承,还是应该对上述方法进行一些更改?

编辑:

Q2。我在 Converter.java 类中还有一种方法使用“查询”字段。由于该字段未在 Converter.java 类中初始化,因此无论我是在所有 5 个子转换器中复制该方法,还是将该方法放在父类(即 Converter.java)中都可以

最佳答案

我认为 Strategy 模式在这里更合适。您可以创建一个具有常见行为的非抽象 Converter 类,并为其提供 ValueSource,它可以执行特定于表的值检索。然后创建一个 QueryValueSource(ValueSource 的子类)以根据指定的查询检索值。

要获得具体的策略,您可以将不同的查询传递到 QueryValueSource 的构造函数中,或者将其子类化以创建特定于表的源。

关于java - Java中的继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2208215/

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