DDD: Comment garder un objet de valeur complexe immuable?
-
29-10-2019 - |
Question
Je voudrais modéliser un Address
comme objet de valeur. Comme c'est une bonne pratique pour le rendre immuable, j'ai choisi de ne fournir aucun setter, qui pourrait permettre de le modifier plus tard.
Une approche commune consiste à transmettre les données au constructeur; Cependant, lorsque l'objet de valeur est assez grand, cela peut devenir assez gonflé:
class Address {
public function __construct(
Point $location,
$houseNumber,
$streetName,
$postcode,
$poBox,
$city,
$region,
$country) {
// ...
}
}
Une autre approche devrait être de fournir les arguments en tant que tableau, résultant en un constructeur propre, mais cela pourrait gâcher l'implémentation du constructeur:
class Address {
public function __construct(array $parts) {
if (! isset($parts['location']) || ! $location instanceof Point) {
throw new Exception('The location is required');
}
$this->location = $location;
// ...
if (isset($parts['poBox'])) {
$this->poBox = $parts['poBox'];
}
// ...
}
}
Cela me semble aussi un peu naturel.
Des conseils sur la façon d'implémenter correctement un objet assez grande valeur?
Pas de solution correcte
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow