我在數據庫中有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