@mx6001

Куда разместить методы?

Есть два класса Application (приложение, работа с объектом) и DB (для работы с базой данных, получение/внесение записей).

И есть два метода saveObject(сохраняет объект класса Aplication в БД) и getObject(Получает запись из БД и сторит по нему объект Application). Вопрос в какой из этих двух классов их лучше расположить и почему? Ибо эти методы(как мне кажется) связаны с функционалом того и другого класса в равной степени.
  • Вопрос задан
  • 2401 просмотр
Решения вопроса 1
EvilsInterrupt
@EvilsInterrupt
System programming, Reversing Engineering, C++
Следуйте принципу наименьшего удивления. Другими словами, найдите 3-4 программистов, которых Вы чье мнение цените и уважаете и спросите "Где бы ты искал в проекте класса описывающий приложение , но чье состояние читается из базы данных?". Если у 2 программеров мнение будет похожим, вероятно и Вы в будущем будете искать там же!
А вообще оба метода, на мой взгляд, относятся к уровню представления данных, т.е. в паттерне MVC это часть "Модель". Мне кажется следует поступить так:
* Эти два метода нужно расположить в одном классе. Но не в Возможные
* Сообразить интерфейс с этими двумя методами, от него породить потомок , имеющийся DB . Это чтобы не привязывать к конкретному месту расположения, вдруг в след раз не DB будет, а Cloud или еще что-то.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
alexplot
@alexplot
Студент, программист
Как по мне, так вы сами ответили на свой вопрос.
DB (для работы с базой данных, получение/внесение записей).


А в классе Application можно получить объект из базы данных через ваш класс DB для того, чтобы уже класс Application с ним работал.
Application (приложение, работа с объектом)
Ответ написан
Комментировать
lexxpavlov
@lexxpavlov
Программист, преподаватель
Хорошим решением будет создать отдельный класс Loader, который будет использовать класс DB (его универсальные методы) для извлечения данных. Что-то типа паттерна Фабрика.
В сам класс DB такие методы лучше не писать, потому как очень скоро в этом классе будет 100500 методов, по два для каждого класса приложения.
Также не стоит помещать подобные методы в тот класс, данные которого хранятся в базе. Сам объект должен уметь работать с полученными данными, и не важно, из какого источника данные получены - может быть, вы захотите хранить эти данные не в БД, а в файле, или в мемкеше.
Ответ написан
foxmuldercp
@foxmuldercp
Системный администратор, программист, фотограф
Если следовать методике MVC - то в asp.net mvc модель - это класс, описывающий структуру таблицы (свойства) + методы обьектов данного класса.

Если следовать методике Perl+Mojolicious, то в модель у меня уходят просто запросы к sql, т.к вещей вроде Hibernate я не использую
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы