|
Как упростить такую иерархию классов ?
|
|||
---|---|---|---|
#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:33 |
|
Как упростить такую иерархию классов ?
|
|||
---|---|---|---|
#18+
Хехе, тут недавно тёрли за интерфейсы с дефолтной реализацией - как раз об этом )) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 15:37 |
|
Как упростить такую иерархию классов ?
|
|||
---|---|---|---|
#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:39 |
|
Как упростить такую иерархию классов ?
|
|||
---|---|---|---|
#18+
Если у тебя нет наследования реализации, кроме как объявления свойств, я бы не парился, сделал бы множестенную реализацию интерфейсов, а сами свойства делал в конечном классе. Нагенерить их - две секунды. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 15:41 |
|
Как упростить такую иерархию классов ?
|
|||
---|---|---|---|
#18+
Shocker.Pro, Что за множественная реализация интерфейсов ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 15:45 |
|
Как упростить такую иерархию классов ?
|
|||
---|---|---|---|
#18+
WaspNewCore, В моем решении с дженериками мне не нравится то, что потеряв наследование, мы уже не сможем где то ниже по иерархии написать: Код: c# 1. 2. 3. 4. 5.
Но OrderedSomeData уже не является классом SomeDataBase ! Так как быть ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 15:48 |
|
Как упростить такую иерархию классов ?
|
|||
---|---|---|---|
#18+
WaspNewCore, А ты не делай наследования вообще. GoF, например, рекомендует по возможности его избегать, отдавая предпочтение другим опциям (интерфейсы, делегирование). Развесистое дерево классов оно как раз так и есть слишком "деревянное" и, в случае чего, его запросто придется полностью ломать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 16:01 |
|
Как упростить такую иерархию классов ?
|
|||
---|---|---|---|
#18+
WaspNewCore, 1. Советую ознакомиться с паттерном Мост (решение проблемы геометрической прогрессии в иерархии) 2. Подумайте, зачем вам иерархия? какую задачу это решает? -- если единственным ответом является экономия букв (не писать похожие свойства два раза), то вам однозначно, 100% не нужна иерархия, противопоказано ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 16:05 |
|
Как упростить такую иерархию классов ?
|
|||
---|---|---|---|
#18+
WaspNewCoreТак как быть ? Максмум, что вам может тут подойти это интерфейсы, так как по ходу вам просто нужен декларативный контракт. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 16:06 |
|
Как упростить такую иерархию классов ?
|
|||
---|---|---|---|
#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: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.
Тут мы отходим от наследования. Насколько это терпимо ? ты просто не умеешь их готовить Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 16:29 |
|
|
start [/forum/topic.php?fid=20&msg=39876064&tid=1398763]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 237ms |
total: | 382ms |
0 / 0 |