В Domain Driven Design службы домена должны содержать операции, которые, естественно, не принадлежат внутри объекта.Услуги домена DDD: что должен содержать класс обслуживания?
У меня были привычка создать одну услугу за объект и группы некоторых методов внутри него (Organization
сущности и OrganizationService
обслуживания).
Но чем больше я думаю об этом: OrganizationService
ничего не значит, «Организация» является не услуга, это вещь.
Так что сейчас я должен добавить функциональность глубокой копии организации, которая будет дублировать всю совокупность Организации, поэтому я хочу поместить ее в службу.
Должен ли я: OrganizationService::copyOrganization(o)
?
Или должен ли он: OrganizationCopyService::copyOrganization(o)
?
В целом: - это «услуга» абстрактная концепция, содержащая несколько операций или услуга конкретной операции?
Редактировать: более приведенные примеры первый не был хорошим:
StrategyService::apply()/cancel()
илиStrategyApplicationService::apply()/cancel()
? («Приложение» здесь не связано с прикладным уровнем;)CarService::wash()
илиCarWashingService::wash()
?
Во всех этих примерах наиболее подходящим является наиболее подходящее имя службы. В конце концов, в реальной жизни «услуга мойки автомобилей» - это то, что имеет смысл. Но я могу получить множество услуг ...
* Примечание: это не вопрос о мнениях! Это точный, ответный вопрос о методологии разработки Driven Design. Я всегда устал от близких голосов, когда спрашивал «должен ли я», но там is DDD способ делать вещи. *
Почему организация клонируется? Ответ на этот вопрос может показать немного больше о том, что служба фактически предоставляет. Я действительно не хочу знать - я просто пытаюсь поднять ваш мыслительный процесс обратно в домен ... – MattDavey
@MattDavey Я понимаю, что вы имеете в виду. Но я боюсь, что все так просто: пользователь хочет «скопировать»/«дублировать» существующую организацию, потому что он хочет создать новый, похожий на предыдущий. Я приветствую ваши мысли об этом, хотя :) –
* «пользователь хочет« скопировать »/« дублировать существующий ... »* - Похоже, что пользователь дал вам решение для реализации, а не проблему для решения! Реальная проблема заключается в том, что создание новых организаций с нуля слишком трудоемко?В этом случае вы предоставляете услугу, которая ускоряет этот процесс? – MattDavey