|
|
|
Где описывать структуру данных?
|
|||
|---|---|---|---|
|
#18+
У меня есть класс Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: plaintext 1. 2. 3. 4. Где второй и третий параметры передают списки столбцов, в одном то, что будет отображаться в таблице, получаемой методом public JTable getTable(){}, а в другом то, что можно получить только методом public Object getCell(int row, String columnName){}, для служебных нужд, и хранится в векторе векторов. Ну плюс это всё потом будет выдаваться в форме XML, для сохранения в файл. Так вот я думаю, где мне создавать структуру таблицы, названия столбцов то есть? В парсере? Или убрать это из конструктора нафиг, ведь RegistryFileType уже достаточно, чтобы понять, какие столбцы понадобятся, и локализовать это в Data? Или сделать Data абстрактным, и создавать его при помощи фабрики, зависимо от того, какой там будет RegistryFileType? Или вообще куда засунуть это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2009, 09:33:53 |
|
||
|
Где описывать структуру данных?
|
|||
|---|---|---|---|
|
#18+
Короче понял, никто тут не занимается практическим программированием Сделаю как захочеццо, еси чо, потом отрефакторю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2009, 07:42:10 |
|
||
|
Где описывать структуру данных?
|
|||
|---|---|---|---|
|
#18+
XDiaBLo, злой ты ;-)) Фаулер, к примеру, рекомендует "заменять признак типа наследованием" ( как-то так, точную формулировку лень вспоминать )) ). Иными словами, это значит, что стоить "сделать Data абстрактным, и создавать его при помощи фабрики, и локализовать это в Data". Тогда и от RegistryFileType вообще можно избавиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2009, 09:33:22 |
|
||
|
Где описывать структуру данных?
|
|||
|---|---|---|---|
|
#18+
egorychXDiaBLo, злой ты ;-)) Фаулер, к примеру, рекомендует "заменять признак типа наследованием" ( как-то так, точную формулировку лень вспоминать )) ). Иными словами, это значит, что стоить "сделать Data абстрактным, и создавать его при помощи фабрики, и локализовать это в Data". Тогда и от RegistryFileType вообще можно избавиться. Хмм, а это идея. Нечто подобное мне приходило сегодня утром на ум, но почему-то не выкристаллизовалось в конкретную идею. Спасибо, я так и сделаю. Правда есть подозрения что могут возникнуть некоторые специфические проблемы, но там уж разберусь в процессе, может я ошибаюсь просто. Кстати, есть шаблоны "абстрактная фабрика", "фабричный метод", "строитель"... Что вы имеете в виду под фабрикой конкретно сейчас? А то я позавчера взялся за книжку по шаблонам, но пока ещё не разобрался с этими шаблонами полностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2009, 09:37:45 |
|
||
|
Где описывать структуру данных?
|
|||
|---|---|---|---|
|
#18+
XDiaBLoКороче понял, никто тут не занимается практическим программированием Сделаю как захочеццо, еси чо, потом отрефакторю. Рассказать еще раз про то как доказывали, что органы слуха у тараканов на лапках ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2009, 09:52:36 |
|
||
|
Где описывать структуру данных?
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)XDiaBLoКороче понял, никто тут не занимается практическим программированием Сделаю как захочеццо, еси чо, потом отрефакторю. Рассказать еще раз про то как доказывали, что органы слуха у тараканов на лапках ??? Нет, спасибо. Мне Егорыч уже помог направить мысль в нужном направлении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2009, 09:54:34 |
|
||
|
Где описывать структуру данных?
|
|||
|---|---|---|---|
|
#18+
XDiaBLo, Мне кажется тут нужен шаблон стратегия. В яве я не буль-буль, но попробую написать пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Пример использования: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2009, 09:59:49 |
|
||
|
Где описывать структуру данных?
|
|||
|---|---|---|---|
|
#18+
MAYAKOV_SV, А парсер на что? Там такой метод я указывал: Data parse(String string){} Правда string надо переименовать в filename, а то непонятно становится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2009, 10:04:43 |
|
||
|
Где описывать структуру данных?
|
|||
|---|---|---|---|
|
#18+
MAYAKOV_SV, Но впрочем насчёт стратегии я подумаю. Хотя по-моему это не совсем подходит. Всё равно спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2009, 10:07:36 |
|
||
|
Где описывать структуру данных?
|
|||
|---|---|---|---|
|
#18+
XDiaBLoMAYAKOV_SV, А парсер на что? Там такой метод я указывал: Data parse(String string){} Правда string надо переименовать в filename, а то непонятно становится. Может быть я немного не то написал, давно ООП не занимался. Есть вариант Parser сделать абстрактным с виртуальной функцией parse. А в классе Data сделать функции для того чтобы парсер мог туда запихивать данные. Т.е. Data занимается хранением данных и предоставляет возможность ими манипулировать. А Parser запихивает туда данные в зависимости от стратегии. Мой пример можно скорректировать, переименовав наименования так: DataTransfer -> Parser LoadData -> parse ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2009, 10:17:22 |
|
||
|
Где описывать структуру данных?
|
|||
|---|---|---|---|
|
#18+
MAYAKOV_SV, Дак ведь тип данных то я в парсере и определяю. Форматов файлов штук пять как минимум. Думаю нужен третий класс, в который стратегию вынести, хмм, подумаю ещё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2009, 10:23:00 |
|
||
|
Где описывать структуру данных?
|
|||
|---|---|---|---|
|
#18+
XDiaBLoMAYAKOV_SV, Дак ведь тип данных то я в парсере и определяю. Форматов файлов штук пять как минимум. Думаю нужен третий класс, в который стратегию вынести, хмм, подумаю ещё. Ну еще разок напишу и больше не буду Можно в качестве третьего класса добавить "строитель", который в зависимости от типа файла будет возвращать стратегию для заполнения данных. Пишу в продолжение к своему примеру: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2009, 10:33:04 |
|
||
|
Где описывать структуру данных?
|
|||
|---|---|---|---|
|
#18+
MAYAKOV_SVXDiaBLoMAYAKOV_SV, Дак ведь тип данных то я в парсере и определяю. Форматов файлов штук пять как минимум. Думаю нужен третий класс, в который стратегию вынести, хмм, подумаю ещё. Ну еще разок напишу и больше не буду Можно в качестве третьего класса добавить "строитель", который в зависимости от типа файла будет возвращать стратегию для заполнения данных. Пишу в продолжение к своему примеру: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Шикарно :) Обмозгую, как разгребу всякую фигню. Это просто не основная задача, делаю по мере появления свободного времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2009, 10:35:37 |
|
||
|
Где описывать структуру данных?
|
|||
|---|---|---|---|
|
#18+
Почитал "библию", то есть GoF, и заподозрил что тут ещё Абстрактная фабрика может помочь. Почитаю дальше, может я и неправ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2009, 15:13:40 |
|
||
|
Где описывать структуру данных?
|
|||
|---|---|---|---|
|
#18+
Да, кажется стратегия не очень отображает то, что обработка этих данных тоже будет несколько отличаться, в зависимости от того, какой тип файла загружен. Я посмотрел, в старой версии программы, 7 типов входного файла. Из них пять обрабатываются одним образом, два немного другим. Причём раньше это было две немного разных программы, первые 5 форматов обрабатывались в одной, вторые 2 формата в другой. То есть получается либо две конкретных фабрики, либо всё таки семь, что впрочем несколько ужасает. Лучше бы их было две Кстати форматы добавляются регулярно. Хотя начальство обещало разобраться с филиалами, и оставить 2 формата. Не думаю что это произойдёт. Поэтому очень важна именно эта часть, возможность добавлять форматы. По-моему Абстрактная фабрика помочь должна, но возможно где-то тут и стратегия нужна, например раз фабрики я вижу 2, значит 7 форматов файлов, между стратегиями можно раскидать. Мне важно не шаблонов напихать побольше, а сделать гибкую систему, т.к. данный продукт часто расширяется и дополняется, и в нём уже целая помойка. Я думаю что проще переписать, предусмотрев будущие изменения и дополнения, чем и дальше по каждой мелочи, шерстить всю программу, и искать взаимозависимости. Тогда и на поддержку и внесение изменений уходить будет меньше времени, и коллегу не стыдно будет привлечь, а то пока я один поддерживаю, а другому программисту, который тут недавно, эту программу даже показать страшно, запутается вконец, и только багов добавит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2009, 15:44:10 |
|
||
|
Где описывать структуру данных?
|
|||
|---|---|---|---|
|
#18+
XDiaBLo, 1. Если кружить по моему примеру, то можно еще сказать: Добавление нового типа файла состоит следующих действий (1) добавление нового производного класса для новой стратегии (если нужна новая) (2) корректировка функции Build (3) если старая стратегия формирует новый тип файла и возможно нужно еще код ее поправить. В принципе если видно две стратегии из 7, то нужно и делать две, вот пример Build: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. a) сам класс Data - вроде по названию он сущностный, а там сидит функция Data для загрузки данный, да еще по ветвящему алгоритму, т.е. два в одном... Я считаю что классы должны выполнять свои обязанности: кто данные хранит, кто алгоритмы выполняет. Объединять стоит, если классы маленькие получаются и нет смысла в разбиении. б) И сама фунция Data: Это: Код: plaintext 1. 2. 3. Код: plaintext 1. Тут тоже нужно пошерстить. Похоже код написан вообще по процедурному мышлению. То что я привел может и не подойти или подойти частично, а вообще можно много разных вариантов предложить, все упирается в конкретную задачу, которую автор сообщения описал в начале размыто и туманно, поэтому и ответов мало... И еще добавлю: сам не владею сильно-то шаблонами, т.к. ООП нет практики сейчас, но скажу что прочитав недавно книгу не стоит сразу пытаться выбрать шаблоны для рефакторинга своих прог. Я тоже, изучив их, сразу ринулся применять шаблоны, как результат - переделывал по нескольку раз, и еще доводил до слез пользователей, т.к. после переделки не совсем хорошо тестировал. Тут лучше поднабраться опыта и применять их для новых программ. Вообще еще помимо GoF, обязательно почитайте про шаблоны GRASP - очень важные принципы, которые помогут правилно мыслить при проектировании ООП систем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2009, 08:39:00 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=36347676&tid=1344008]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
181ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 488ms |

| 0 / 0 |
