another_dream
@another_dream
Backend-разработчик, Laravel/ZF2/Yii2

Как грамотно спроектировать структуру приложения?

Имеется следующая структура: ZABvQLW.png

В приложении имеются следующие сущности:
  • Автомобиль (база автомобилей их параметров и прочее)
  • Комментарий
  • Гео
    • Область
    • Район
    • Город

  • Продукт
  • Продажа
  • Пользователь
    • Автомобиль, которым владеет юзер
      • Водитель автомобиля




Вопросы:
1. Entities - сущности приложения. Корректно ли я оперирую этим понятием?
2. Каждая сущность будет содержать (при необходимости) имплементацию репозитория, сервиса, бизнес-модель (DTO), ActiveRecord (например для связей) - это "ок" или нужно как-то по другому организовать инфраструктуру для каждой сущности?
3. Годится ли подобный подход для инкапсуляции бизнес-логики в отдельный слой?
  • Вопрос задан
  • 441 просмотр
Решения вопроса 1
qonand
@qonand
Software Engineer
ох что-то Вы не понятное пытаетесь построить. Судя по вопросу у Вас набор паттернов а не архитектура. Что Вы хотите получить в итоге? слоенную архитектуру? так она так не строиться. DTO - это объект для передачи данных, он не хранит бизнес-логики, репозиторий и Active Record как правило не используются совместно. В общем судя из постановки задачи могу сказать что Вы не совсем понимаете как строить подобную архитектуру, поэтому рекомендую Вам вначале почитать про слоеную архитектуру (например у того же Фаулера), про модель предметной области, про DDD, а потом уже переходить к практике. Для начала можете пробежаться для начала по этим статьям:
статья 1
статья 2
статья 3
статья 4
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@vism
Можно только сказать, что семантика папок верная (папочка вложена в другую папочку корректно)
А больше тут что сказать?

Намного важнее, чтоб вы следовали стандартам фреймворка, верно разносили логику по моделям, делали тонкий контроллер и т.д.
Обычно вобще логику диктует реляционная бд, если вы ее используете.
Верно построите БД, все само по себе и в коде выстроится.
Ответ написан
Комментировать
Как минимум стоит переименовать одинаковые сущности автомобилей. Либо создать caruser для авто пользователя, либо cardata (carinfo) для информации по автомобилю.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы