vendredi 2 février 2018

Construction of command object with optional parameters in CQRS

Having read what feels like hundreds of articles on the correct location for Validation I settled on placing superficial validation within my Command objects.

My Command object contains a combination of required and optional information used to construct my domain object.

class Command
{
  /*
  | Required stuff
  */
  private $req1;
  private $req2;

  /*
  | Optional stuff
  */
  private $opt1;
  private $opt2;
  private $opt4;

  private function __construct($req1, $req1, $opt1, $opt2, $opt3)
  {
    // perform superficial validation & set if OK
    $this->setReq1($req1);
    // ...
  }
}

For objects which have a large number of parameters (required and/or optional), you might make use of the builder pattern rather than having lengthy constructors. I could use a builder for my command, however, I'm not sure this is the correct approach?

Is the builder pattern appropriate here or should I simplify the command to be more DTO like (public attributes) and perform the validation in the command handler? Or is there another option?

Aucun commentaire:

Enregistrer un commentaire