- Sto cercando di capire come identificare i servizi applicativi nella mia applicazione. Penso di poter identificare un servizio di dominio di 2 cose:
- Agisce come facciata per il repository.
- Detiene la logica aziendale che non può essere incapsulata in una singola entità.
Quindi ho pensato a questo caso di utilizzo semplice a cui sto lavorando attualmente:
Un amministratore dovrebbe essere in grado di escludere un determinato utente. L'operazione deve essere registrata e un'email deve essere inviata all'utente bannato.
Ho un UserRepository
che ha una funzione getUserById()
. Ho un'entità User
che ha una funzione ban()
.
Creerò un UserService
come questo:
class UserService{
static void banUser(int userId){
User user= UserRepository.getUserById(userId);
user.ban();
UserRepository.update(user);
}
}
La userId
è una variabile POST
che riceverò nel mio Controller
da un modulo web.
Ora dove va la registrazione? Devo registrare il processo di ban due volte prima e dopo l'operazione ex:
Logger.log("Attempting to ban user with id:"+userId);
//user gets banned
Logger.log("user banned successfully.");
In secondo luogo, ho bisogno di inviare una mail all'utente. dove dovrebbe andare la chiamata?
Ho pensato di inserire la registrazione e l'email è la classe UserService
stessa, ma penso che ci siano soluzioni migliori.
Terzo, dove si adattano tutti i servizi applicativi?