|
|
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
Есть конфигурационный файл(формата properties). В нем перечислены через запятую элементы, которые необходимо загрузить из xml. Можно так же указать группу, не перечисляя все и загрузятся только те элементы, которые принадлежат к этой группе. В конфиге можно писать одновременно и группы и элементы из другой группы или которые не входят ни в какую группу. Этот конфиг заполняет пользователь. Данные из xml для каждого элемента грузятся по-разному в базу, но берутся из одного xml. Поэтому считаем что логика совершенно разная у каждого перечисленного элемента Как лучше реализовать архитектуру данного компонента? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 15:23:45 |
|
||
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
lukdiman, Многовато задач для одного компонента. Инкапсулировать \ декомпозировать на субкомпоненты. И написать ограничения, т.е. что компонент и пользователь НЕ может и НЕ должен. Например, xPath, который ты описал в первой части. ______________________________________________ "Сложнее всего в мире достигнуть простоты — это крайняя граница опыта и последнее усилие гения". © George Sand. AutoPOI.ru — ГИС-технологии для Oracle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 15:33:08 |
|
||
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
Но тем не менее такая задача есть и ее надо делать :) И меньше требований к компоненту не будет. У меня получается слишком много switch case потому что очень много разных элементов, которые может написать пользователь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 15:46:45 |
|
||
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
lukdimanНо тем не менее такая задача есть и ее надо делать :) И меньше требований к компоненту не будет. У меня получается слишком много switch case потому что очень много разных элементов, которые может написать пользователь switch, обычно, легко заменяется полиморфизмом, кроме случаев вроде таблицы решений. Покажите какой код получился, подскажем что поменять. Понять что нужно из такого сумбурного объяснения достаточно сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 15:51:33 |
|
||
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
Сделайте enum со стратегией например Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 16:04:34 |
|
||
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
Но полиморфизм породит тонну классов. Чем это будет лучше switch case? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 16:07:11 |
|
||
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
lukdimanНо полиморфизм породит тонну классов. Прям таки тонну? А switch для десятка стратегий с вложеной логикой будет нормально читаться? lukdimanЧем это будет лучше switch case? Тем же чем OOP лучше процедурного подхода. Уменьшить размеры методов. Кода будет меньше. Он будет лучше читаться. Если нужно создать иерархию, в которой больше одного родителя, то на switch..case это будет выглядеть ещё запутаннее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 16:13:16 |
|
||
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
Не тонну, но 20-30 точно. Но выбирать какой класс использовать все равно придется через switch ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 16:15:03 |
|
||
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
lukdiman, у меня в enum нет свитчя ^^ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 16:18:06 |
|
||
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
lukdimanНе тонну, но 20-30 точно. Но выбирать какой класс использовать все равно придется через switch Не обязательно. Можно через Map или Class.forName(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 16:18:53 |
|
||
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
lukdimanНо тем не менее такая задача есть и ее надо делать :) И меньше требований к компоненту не будет. У меня получается слишком много switch case потому что очень много разных элементов, которые может написать пользователь вот с этого и начните. Есть ЯП - SQL Есть ЯП - xPath Приведите пример ЯП по которому пользователь будет выбирать Группы\Элементы И уточните, атрибут в терминологии XML для вас это что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 16:22:43 |
|
||
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
Лагман, Ваш enum не скомпилируется. Так нельзя писать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 16:22:54 |
|
||
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
lukdiman, вобще-то можно, но лучше конечно разнести по отдельным файлам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 16:23:56 |
|
||
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, можно загнать все в jaxb, если конечно группы и элементы это путь а не условие на значение атрибута. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 16:25:07 |
|
||
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
lukdimanЛагман, Ваш enum не скомпилируется. Так нельзя писать То что конкретный пример не компилируется ещё не значит что весь подход не верен. Так можно писать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 16:25:25 |
|
||
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
Лагманвобще-то можно, но лучше конечно разнести по отдельным файлам Через enum удобно как раз dispatch сделать на какие-то корневые классы. А там уже логику отдельную держать в каждом класса или иерархии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 16:26:30 |
|
||
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
А если группа, то получается надо еще внутри групповых лоадеров создавать лист чилдовых? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 16:54:27 |
|
||
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
lukdiman, в моём примере можно упихать все дерево в конструкторы enum, но я не знаю какова ваша конкретная ситуация, меняется ли глубина залегания узлов хml, и пр.. Пример так, чтобы показать как можно обходиться без кейсов. Делайте как вам нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 17:01:43 |
|
||
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
Вложенность не меняется. В принципе есть только элементы. Группы это надуманная абстракция, написав которую можно загрузить все элементы этой группы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 17:10:21 |
|
||
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
- как описывается группа из N элементов? - где парсер берёт данную информацию? Т.е. это будет второе дерево - xml в Prop....? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 17:37:19 |
|
||
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
xml идет отдельным файлом. в пропертях описывается только список узлов, которые надо загрузить или группа. группа состоит из нескольких узлов, которые надо прогрузить. в основе всего все равно лежат эти узлы. просто придумали группы чтобы не перечислять через запятую их если надо прогрузить все сразу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 17:47:39 |
|
||
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
lukdimanxml идет отдельным файлом. в пропертях описывается только список узлов, которые надо загрузить или группа. группа состоит из нескольких узлов, которые надо прогрузить. в основе всего все равно лежат эти узлы. просто придумали группы чтобы не перечислять через запятую их если надо прогрузить все сразу приведи пример! сюда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 17:49:33 |
|
||
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
Возможные таблицы(узлы xml файла): TABLE1, TABLE2, TABLE3, TABLE4, TABLE5, TABLE6 Возможные группы таблиц: GROUP1(TABLE4, TABLE5) loader.properties table=TABLE1,TABLE2,TABLE3,GROUP1 Пример xml файла: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 18:03:01 |
|
||
|
Совет по архитектуре компонента
|
|||
|---|---|---|---|
|
#18+
lukdimanВозможные группы таблиц: GROUP1(TABLE4, TABLE5) Группы имеют смысл, когда их используют ПОВТОРНО где нибудь. А так, пользователю нафиг надо их писать и описывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 18:12:42 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38181617&tid=2129796]: |
0ms |
get settings: |
18ms |
get forum list: |
20ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
67ms |
get topic data: |
22ms |
get forum data: |
5ms |
get page messages: |
95ms |
get tp. blocked users: |
3ms |
| others: | 300ms |
| total: | 540ms |

| 0 / 0 |
