У меня много узлов XML, созданных сторонней организацией:
<node id='8440' name='nodeOne' property_two='7.22' sorting_index='20'/>
<node id='8440' name='nodeTwo' property_two='7.22' sorting_index='subItemThree;30;subItemTwenty;50'/>
...
Каждый атрибут имеет одинаковый тип и значение среди всех узлов, кроме одного с именем sorting_index . Обычно он содержит int
, указывающий, ну, в общем, индекс сортировки объекта. В первом вышеупомянутом узле индекс сортировки равен 20 для объекта с именем «nodeOne».
К сожалению, иногда эти узлы являются просто "носителями" индекса сортировки для нескольких подобъектов. Рассматривая второй узел, приведенный выше, мы видим, что он обеспечивает сортировку индексов для объектов с именами «subItemThree» и «subItemTwenty» со значениями 30 и 50 соответственно.
В моем подходе я создал два класса, первый из которых - представление узла с простым sorting_index, а второй - представление узла со сложной логикой sorting_index. Второй класс расширил первый и добавил метод для извлечения массива сортировочных индексов из геттера свойства SortingIndex .
Поэтому я проанализировал все в базовом классе (свойство SortingIndex относится к типу string
), а затем преобразовал некоторые из них в производный класс. Я описал логику этого в другом вопросе: Преобразование из базового в производный объект при огромном определении конструктора
Однако мне сказали, что такое преобразование не является хорошим подходом к проектированию. Каковы ваши предложения? Я чувствую, что иметь 2 абсолютно независимых класса с абсолютно одинаковой логикой, за исключением одного свойства, является излишним.