В настоящее время я разрабатываю структуру сохранения своего приложения... и я обсуждаю два решения для абстракции.
Вариант 1. Первый и более простой (но, возможно, более связанный с базой данных) двухуровневый подход. В этом подходе сопоставители данных извлекают данные из базы данных и создают бизнес-объекты.
Примерная схема рабочего процесса:
UserEntity <= UserMapper => Database
Вариант 2. Второй и более гибкий (но, возможно, излишний) подход — это трехуровневый подход. В этом подходе у нас есть ТРЕТИЙ объект, работа которого заключается исключительно в том, чтобы обращаться к базе данных и возвращать массив данных в Data Mapper, который затем создает объект.
Грубая схема:
UserEntity <= UserMapper <= UserDataRetriever => Database
Очевидно, что преимущество первого варианта заключается в том, что его проще и, следовательно, быстрее создать. Преимущество второго варианта заключается в том, что проще изменить мои методы сохранения, так как мне нужно будет только изменить подключение моего DataRetriever к БД (и связанные запросы).
Поскольку этот сайт будет очень быстро расти, я хотел бы выбрать наиболее гибкий вариант, не вдаваясь в область антипаттернов.
Что лучше?