Это вопрос разработки, а не вопроса, специфичного для Java, но я разрабатываю его для Java.
Я написал несколько классов XML для разборки для обработки пользовательского ответа XML и, как яспроектировать их, я не могу не думать, есть ли что-то лучше.Может быть, у кого-то даже есть шаблон проектирования для него.
Итак, вот как может выглядеть мой XML:
<ResponseRoot>
<Header>
<RequestId />
<OtherHeaderMetaData />
</Header>
<Body>
...
<!-- Lots of other elements and nested elements -->
...
</Body>
</ResponseRoot>
Итак, в зависимости от RequestId
(своего рода ключ),Body
элемент отличается.Учитывая, что это разбор по запросу, у меня был бы большой оператор switch и много блоков if-else-if.
Было бы более эффективно для одного класса с большим количеством статических методов обрабатывать весь поток XMLили было бы лучше сделать так, чтобы один класс отвечал за каждый RequestId
?
Я думал о сопоставлении RequestId
с именем класса, а затем, когда я нажимаю Body
, я используюфабрика для извлечения соответствующего подпарсера.Внутри этой фабрики я мог бы даже использовать отображение Class
экземпляров и использовать отражение для создания экземпляра соответствующего синтаксического анализатора (поскольку не все анализаторы нужны все время).Или ... используйте отражение, чтобы получить соответствующий статический анализ метод вместо этого, поэтому мне не нужно создавать экземпляры синтаксических анализаторов, которые на самом деле являются классами только 1 использования ...
Да, яЯ слишком глубоко задумываюсь, но, поскольку это всего лишь личный проект, мне просто стало интересно, как люди разрабатывают классы разбора вокруг анализатора StAX.