我在数据库中有5个不同的表。我写了一个抽象的“Converter.java”类,它从数据库中取出数据并将其转换为“tree.xml”文件。Java中的继承问题
Tree.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个不同的转换器,我已经作出了singele “Converter.java” 具有的功能类似于
- openTree()
- closeTree()
- openBranch()
- closeBranc()
- openLeaf()
- closeLeaf()
- 的addAttribute()
在上述方法之外,我实现了除addAttribute()方法以外的所有方法,因为它将根据表执行实现。
在那之后,我已经编写了5个不同的转换器,每一个表,所有的人都伸出“Converter.java”
我做了一个名为作为Converter.java类“查询”字段。由于这个字段被所有5个转换器继承,我已经在这5个转换器的构造函数中初始化了这个字段。
现在我的问题如下:
问:我没有信心,我是否正确使用继承或者应该在上述方法的一些变化?
编辑:
Q2。在Converter.java类中使用“query”字段的方法还有一个。因为该字段没有在Converter.java类中初始化,所以我是否在所有5个子转换器中复制该方法,或者将该方法放在父类中(即Converter.java)
这绝对是要走的路。很多时候,人们试图将继承作为自己的设计模式使用,当它可以工作时,选择一种与您尝试做的事情相匹配的设计模式可以在设计,开发,维护以及尝试时提供重要的价值增加增强功能。 – BestPractices 2010-02-06 13:18:40