Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
14.10.2019, 15:33
|
|||
---|---|---|---|
|
|||
Как упростить такую иерархию классов ? |
|||
#18+
В некотором коде, в некотором государстве жил был такой код. Как бы его упростить ? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
А дальше идет спорная часть Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Не нравится такое не хорошее ветвление в иерархии классов. Если добавится еще какое-то свойство к текущей иерархии, то количество классов-наследников будет расти в геометрической прогрессии. Как решить такую проблему ? Желательно с примером кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.10.2019, 15:37
|
|||
---|---|---|---|
|
|||
Как упростить такую иерархию классов ? |
|||
#18+
Хехе, тут недавно тёрли за интерфейсы с дефолтной реализацией - как раз об этом )) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.10.2019, 15:39
|
|||
---|---|---|---|
|
|||
Как упростить такую иерархию классов ? |
|||
#18+
Можно бы задействовать дженерики. Но решение тоже не очень нравится. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Тут мы отходим от наследования. Насколько это терпимо ? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.10.2019, 15:41
|
|||
---|---|---|---|
|
|||
Как упростить такую иерархию классов ? |
|||
#18+
Если у тебя нет наследования реализации, кроме как объявления свойств, я бы не парился, сделал бы множестенную реализацию интерфейсов, а сами свойства делал в конечном классе. Нагенерить их - две секунды. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.10.2019, 15:45
|
|||
---|---|---|---|
|
|||
Как упростить такую иерархию классов ? |
|||
#18+
Shocker.Pro, Что за множественная реализация интерфейсов ? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.10.2019, 15:48
|
|||
---|---|---|---|
|
|||
Как упростить такую иерархию классов ? |
|||
#18+
WaspNewCore, В моем решении с дженериками мне не нравится то, что потеряв наследование, мы уже не сможем где то ниже по иерархии написать: Код: c# 1. 2. 3. 4. 5.
Но OrderedSomeData уже не является классом SomeDataBase ! Так как быть ? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.10.2019, 16:01
|
|||
---|---|---|---|
Как упростить такую иерархию классов ? |
|||
#18+
WaspNewCore, А ты не делай наследования вообще. GoF, например, рекомендует по возможности его избегать, отдавая предпочтение другим опциям (интерфейсы, делегирование). Развесистое дерево классов оно как раз так и есть слишком "деревянное" и, в случае чего, его запросто придется полностью ломать. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.10.2019, 16:05
|
|||
---|---|---|---|
Как упростить такую иерархию классов ? |
|||
#18+
WaspNewCore, 1. Советую ознакомиться с паттерном Мост (решение проблемы геометрической прогрессии в иерархии) 2. Подумайте, зачем вам иерархия? какую задачу это решает? -- если единственным ответом является экономия букв (не писать похожие свойства два раза), то вам однозначно, 100% не нужна иерархия, противопоказано ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.10.2019, 16:06
|
|||
---|---|---|---|
Как упростить такую иерархию классов ? |
|||
#18+
WaspNewCoreТак как быть ? Максмум, что вам может тут подойти это интерфейсы, так как по ходу вам просто нужен декларативный контракт. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.10.2019, 16:27
|
|||
---|---|---|---|
Как упростить такую иерархию классов ? |
|||
#18+
WaspNewCore, как пример без наследования: Код: c# 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.10.2019, 16:29
|
|||
---|---|---|---|
Как упростить такую иерархию классов ? |
|||
#18+
WaspNewCoreМожно бы задействовать дженерики. Но решение тоже не очень нравится. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Тут мы отходим от наследования. Насколько это терпимо ? ты просто не умеешь их готовить Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/search_topic.php?author=%D0%90%D0%B1%D1%8B%D0%BB%D0%B0%D0%B9%D1%85%D0%B0%D0%BD%D0%BD&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 491ms |
total: | 765ms |
0 / 0 |