2017-09-22 7 views
1

Je crée une application dans DDD. Je veux savoir deux choses:Utilisation correcte des gestionnaires de commandes dans ddd

1- Est-il correct de créer les objets de valeur (id, email, mot de passe) dans le RegisterUserHandler? ou je dois créer une classe spécifique qui fait cela?

2- Il est nécessaire de créer une fabrique pour une création d'entité simple. J'utilise userfactory pour créer l'utilisateur, mais je peux mettre directement la ligne suivante: "$ utilisateur = Utilisateur :: registre ($ id, $ email, $ mot de passe);" dans le RegisterUserHandler et supprimer la userFactory?

//class RegisterUserHandler 
public function handle(CommandInterface $command) 
{ 
    $id = Id::create(); 
    $email = Email::create($command->email()); 
    $password = Password::create($command->password()); 

    $this->userFactory->create($id, $email, $password); 
} 


//class userfactory 
public function create(Id $id, Email $email, Password $password) 
{ 
    $user = User::register($id, $email, $password); 
    return $user; 

} 

Répondre

1

Vous ne necesarily besoin d'utiliser une usine pour créer value object s ou entities si la création est aussi simple qu'un appel constructeur. Le principe qui s'applique dans ce cas est KISS.

Si le processus contient certains algorithme alors vous pouvez l'extraire dans une usine pour déplacer la responsabilité ailleurs.