2017-09-22 1 views
1

DDD에서 응용 프로그램을 만들고 있습니다.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; 

} 

답변

1

당신은 necesarily 작성이 생성자를 호출하는 것만 큼 간단 경우 value object s 또는 entities를 만드는 공장을 사용할 필요가 없습니다. 이 경우 적용되는 원칙은 KISS입니다.

프로세스에 일부 알고리즘이있는 경우 알고리즘을 사용하면 다른 곳으로 책임을 이동하기 위해 팩토리로 추출 할 수 있습니다.

관련 문제