Disons que nous avons Foo en tant que AggregateRoot. Et il ya générique Foo s ainsi que EnhancedFoo s avec un certain nombre de propriétés étendues. Est-il acceptable d'exposer "Actions" sur une seule classe racine agrégée pour les propriétés génériques et améliorées et d'avoir une vérification de validation pour lancer une exception si l'action améliorée a été appelée sur un objet Foo non amélioré? Techniquement, AggregateRoot dans ce cas agrégera toutes les "Actions" possibles pour tous les types Foo pris en charge?Comment AggregateRoots agrège les types d'objets diffidents?
De toute évidence beaucoup dépend de la structure du domaine, mais je pense que cette situation hypothétique est assez commune. Question probablement basique mais je commence juste avec Aggregates/Roots.
mise à jour par rétroaction
Disons que nous avons Foo comme AggregateRoot. Et il y a générique Foo s ainsi que FlyableFoo s, SwimmableFoo s, etc. Ainsi, agrégats doivent « savoir » sur tous les comportements possibles (mouche, charlatan, natation) et l'exposer de façon appropriée à la fonctionnalité de service. Et si quelque chose s'appelle une raison qui n'est pas "supportée" par l'objet courant, Aggregate peut lancer une exception "Désolé, pingouin ne peut pas voler".
Ce n'est pas clair d'après ma question, mais j'utilise effectivement la composition. Aussi, au lieu de dire "Propriétés" j'aurais dû dire "Comportements". J'ai ajouté une mise à jour à ma question, veuillez vérifier. Aussi, merci d'avoir mentionné le diagramme "Composition sur héritage", c'était très utile! – Tenek
@Tenek voir ma réponse mise à jour –