Я чувствую, когда вы хотите отделить логику, которая включает в себя функции создания-обновления моделей, вы можете использовать концепцию Repository
.По сути, это не что иное, как класс, который заботится о действиях, происходящих в конкретной модели.
Сервис больше похож на класс, который посвящен определенной концепции предметной области.Цель службы - предоставить вспомогательные функции для работы с концепцией домена, которую представляет служба.
Для упрощения, например:
Возможно, у вас есть модель пользователя.Каждый пользователь может получить свои фиды Facebook.Также он может записаться на групповое обсуждение.В этом случае у вас может быть 2 услуги:
FacebookService
, которые отвечают за все действия, которые вам понадобятся, связанные с публикацией в Facebook.DiscussionService
, который отвечает за все действия, которые вам понадобятся в отношении групповых обсуждений.
Теперь вы можете добавить функциональность в обсуждение, чтобы опубликовать недавнее обсуждение на Facebook.Это означает, что DiscussionService
может внутренне получить доступ к FacebookService
, чтобы использовать его определенные вспомогательные функции.
Даже если в этом примере 2 сервиса используются вместе, все же каждый сервис делает только то, что он знает согласнопонятие домена, которому оно назначено.Если что-то выходит за рамки обслуживания, мы вызываем соответствующую сервисную функцию.Надеюсь, это поможет ...