我正在DDD中创建一个应用程序。我想知道两件事:
1-在RegisterUserHandler中创建值对象(id,email,password)是否正确?或者我必须创建一个特定的类来制作它?
2-必须为简单的实体创建创建工厂。我使用userfactory创建用户,但我可以直接放下一行:“$ user = User :: register($ id,$ email,$ password);”在RegisterUserHandler中删除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;
}
答案 0 :(得分:1)
如果创建与构造函数调用一样简单,那么您根本不需要使用工厂来创建value object
或entities
。在这种情况下适用的原则是KISS。
如果该过程包含某些算法,那么您可以将其提取到工厂中以将责任转移到其他地方。