У меня есть 5 разных таблиц в базе данных. Я написал абстрактный класс «Converter.java», который извлекает данные из базы данных и преобразует их в файл «tree.xml».
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 таблиц. Единственная разница заключается в значении атрибута «значение».
Чтобы получить значение этого атрибута "value", преобразователь сначала должен запросить в базе данных эти значения.
Итак, должно быть 5 разных запросов для 5 разных таблиц. Поэтому вместо того, чтобы кодировать 5 разных конвертеров, я сделал отдельный конвертер "Converter.java", который имеет такие функции, как
- openTree ()
- closeTree ()
- openBranch ()
- closeBranc ()
- openLeaf ()
- closeLeaf ()
- AddAttribute ()
Из вышеперечисленных методов я реализовал все методы, кроме метода addAttribute (), так как он будет иметь реализацию в зависимости от таблицы.
После этого я кодировал 5 разных конвертеров, каждый для одной таблицы, и все они расширяют "Converter.java"
Я создал поле с именем «query» в классе Converter.java. Поскольку это поле наследуется всеми 5 конвертерами, я инициализировал это поле в конструкторах этих 5 конвертеров.
Теперь мой вопрос таков:
Q. Я не уверен, правильно ли я использовал наследование или должны быть какие-то изменения в вышеуказанном подходе?
Edit:
Q2. У меня есть еще один метод в классе Converter.java, который использует поле «запрос». Поскольку поле не инициализировано в классе Converter.java, копирую ли я этот метод во все 5 дочерних преобразователей, или можно поместить этот метод в родительский класс (т. Е. Converter.java)