Вопрос №60965 от пользователя Factory Factory в уроке «Архитектура», курс «JS: Предметно-ориентированное проектирование»

Factory Factory

Не совсем понятно как определять какая логика должна быть в доменном слое а какая в сервисном. В пройденном ранее уроке "Сущности и связи", добавление объекта FilmScreening в список filmScreenings объекта CinemaHall происходит в конструкторе FilmScreening

export default class FilmScreening {
  constructor(film, cinemaHall, time) {
    this.id = uuid.create().toString();
    this.film = film;
    this.cinemaHall = cinemaHall;
    this.time = time;
    this.createdAt = new Date();

    this.cinemaHall.addFilmScreening(this);
  }
}

но это можно сделать и в сервисе. Например:

export default class extends ApplicationService {
  createFilmScreening(filmId, cinemaHallId, time) {
    const film = this.FilmRepository.find(filmId);
    const hall = this.CinemaHallRepository.find(cinemaHallId);
    const filmScreening = new FilmScreening(film, hall, time);
    // добавление показа фильма в зал
    hall.addFilmScreening(filmScreening);
    ...
  }
}

почему это нельзя делать в сервисе в данном случае? Пока не уловил четкую границу между сервисным слоем и доменным.

1 0

Станислав Дзисяк

Factory Factory, приветствую!

В предыдущем уроке рассматривалась работа только со слоем сущностей, но в текущем были добавлены репозитории и сервисы. Соответственно часть логики которая ранее находилась внутри доменного слоя, теперь разнесена по репозиториям и сервисам. Направление вашей мысли в целом верное, сервис отвечает за определённый сценарий, в данном случае создание сущности FilmScreening. Этот сценарий подразумевает получение film, hall, создание инстанса filmScreening и сохранение его в репозитории. Порекомендую вам пройти упражнение, а после изучить и разобрать решение учителя.

0

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
1 июня 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
1 июня 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
1 июня 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
1 июня 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
1 июня 16 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
1 июня 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Создает веб-приложения со скоростью света
1 июня 5 месяцев