118 / 5 / 4
Регистрация: 05.05.2013
Сообщений: 336
|
||||||||||||||||
1 | ||||||||||||||||
База данных в классы или "Меньшее из зол"04.03.2017, 11:07. Показов 1701. Ответов 4
Метки нет (Все метки)
Добрый вечер. Пишу API для сайта. Пришел в ступор, когда пришла необходимость использовать базу данных в нескольких классах.
Видел много разных решений и, как не странно, ВСЕ из них были раскритикованы... Способы: 1. через "синглтон" Кликните здесь для просмотра всего текста
2. Глобальная база данных, которая естественно нарушает принципы ооп 3. Передача базы данных в конструктор класса. Тогда, тут возникает ряд вопросов:
Предварительная структура такая:
4. Есть еще вариант доп. обертки БД
0
|
04.03.2017, 11:07 | |
Ответы с готовыми решениями:
4
Из двух зол меньшее. AMD Phenom II x6 или AMD FX6300 Выбираем меньшее из двух зол (DI vs Copy/Paste) Из 2 "зол" надо выбрать меньшее Классы. База данных с динамическим числом столбцов |
3851 / 3196 / 1343
Регистрация: 01.08.2012
Сообщений: 10,820
|
||||||
04.03.2017, 12:24 | 2 | |||||
Приходится выбирать между удобным и правильным, идеального решения нет.
Если у сущности 30 полей - перечисляем 30 переменных, да ещё и по 30 условий в геттере и сеттере? И нарушается SOLID, поскольку сущность умеет сама себя сохранять в БД. Мой вариант (далеко не идеальный):
1
|
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
|
|
04.03.2017, 12:52 | 3 |
Сообщение было отмечено darksector как решение
Решение
Ничего странного, идеала нет. Но действительно, все 4 описанных вами варианта довольно ужасны. Посмотрите Inversion of Control. Это можно применять не только для работы с БД.
А по поводу БД, посмотрите паттерны Active record и Data mapper.
1
|
123 / 77 / 33
Регистрация: 05.03.2013
Сообщений: 449
|
|
06.03.2017, 13:52 | 4 |
0
|
3851 / 3196 / 1343
Регистрация: 01.08.2012
Сообщений: 10,820
|
|
06.03.2017, 14:41 | 5 |
andr-xw, с точки зрения SOLID так и есть. А с практической - нарушать первую нормальную форму тоже плохо, но иногда гораздо проще, чем создавать лишнюю таблицу.
0
|
06.03.2017, 14:41 | |
06.03.2017, 14:41 | |
Помогаю со студенческими работами здесь
5
XML или База данных или Что - то ещё? База данных с++ или с# Enumerations или база данных? Массив или база данных? База данных или нет? Одна база данных или две Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |