In Domain Driven Design, i servizi di dominio devono contenere operazioni che non appartengono naturalmente a un'entità.Servizi di dominio DDD: cosa deve contenere una classe di servizio?
ho avuto l'abitudine di creare un servizio per entità e di gruppo alcuni metodi al suo interno (Organization
entità e OrganizationService
servizio).
Ma più ci penso: OrganizationService
non significa nulla, "Organizzazione" è non un servizio, è una cosa.
Quindi adesso devo aggiungere una funzionalità di copia in profondità dell'organizzazione che duplicherà un intero aggregato dell'organizzazione, quindi voglio inserirlo in un servizio.
Devo fare: OrganizationService::copyOrganization(o)
?
Oppure devo fare: OrganizationCopyService::copyOrganization(o)
?
Più in generale: è un "servizio" un concetto astratto contenente diverse operazioni o è un servizio un'operazione concreta?
Modifica: più esempi riportati il primo non era buona:
StrategyService::apply()/cancel()
oStrategyApplicationService::apply()/cancel()
? ("Applicazione" qui non è correlata al livello applicazione;)CarService::wash()
oCarWashingService::wash()
?
In tutti questi esempi il nome del servizio più specifico sembra il più appropriato. Dopotutto, nella vita reale, il "servizio di lavaggio auto" è qualcosa che ha senso. Ma potrei finire con un sacco di servizi ...
* Nota: questa non è una domanda sulle opinioni! Questa è una domanda precisa e rispondente sulla metodologia di Domain Driven Design. Sono sempre stanco di voti ravvicinati quando chiedo "dovrei", ma è un modo DDD di fare le cose. *
Perché l'organizzazione viene clonata? La risposta a questa domanda potrebbe rivelare un po 'di più su ciò che il servizio sta effettivamente fornendo. In realtà non voglio sapere - sto solo cercando di elevare il tuo processo di pensiero nel dominio ... – MattDavey
@MattDavey Vedo cosa intendi. Ma temo sia così semplice: l'utente vuole "copiare"/"duplicare" un'organizzazione esistente perché vuole crearne una nuova che assomigli molto alla precedente. Apprezzo i tuoi pensieri su questo però :) –
* "l'utente vuole" copiare "/" duplicare un esistente ... "* - Sembra che l'utente abbia dato una soluzione da implementare piuttosto che un problema da risolvere! il vero problema è che creare nuove organizzazioni da zero richiede troppo tempo?Nel qual caso offri un servizio che velocizza questo processo? – MattDavey