Quel serait le meilleur modèle de conception pour ce problème:
J'ai un objet A. L'objet A peut être enregistré ou supprimé de la base de données en fonction de la demande de l'utilisateur.
La validation des données est effectuée avant l'enregistrement ou la suppression de l'objet. Il y a un ensemble de règles à vérifier avant de pouvoir enregistrer l'objet et un autre ensemble de règles à supprimer. Certaines de ces règles sont communes aux deux opérations.
Jusqu'à présent, je pense que le modèle de conception de la chaîne de responsabilité convient le mieux, mais j'ai du mal à le mettre en œuvre.
design-patterns
melodui
la source
la source
Réponses:
Normalement, j'utilise une classe de validateur distincte pour valider chaque cas d'utilisation. Par exemple, avant d'ajouter un produit à la base de données, j'utiliserai AddProductValidator pour valider la règle métier, avant de supprimer le produit, j'utiliserai DeleteProductValidator pour valider, etc.
Pour structurer la classe de validateur, je suis l'approche ici: http://lostechies.com/jimmybogard/2007/10/24/entity-validation-with-visitors-and-extension-methods/
Si vous utilisez .NET, je pense que vous voudrez peut-être envisager la validation fluide ( https://github.com/JeremySkinner/FluentValidation ). Je pense que c'est assez cool et assez proche de l'article que j'ai mentionné ci-dessus
la source
Comme décrit, j'implémenterais probablement un type d'option . De cette façon, je pourrais retourner un "Aucun" ou une valeur validée (peut-être paresseusement) mais c'est un détail d'implémentation et conduit bien à l'idée d'utiliser un décorateur .
Bien sûr, si l'interface devient moche, j'utiliserais une façade .
la source