Une fois, j'ai eu une discussion sur la conception, par rapport au modèle de commande. Mon collègue a déclaré qu'un objet de commande ne devrait pas renvoyer l'état (réussi, non réussi et pourquoi) après l'appel de la méthode .execute(). La raison en est que vous ne devez pas vous préoccuper de savoir si la commande est exécutée ou non, car la commande ne doit pas contenir d'état. Vous devez cependant vérifier après l'invocation si la commande a eu l'effet escompté. Un autre point qu'il a fait valoir est que sur le Gang of Four, le pattern de commande ne présente pas ce cas (de retour d'état).
J'ai soutenu le point opposé. Le GoF ne présente pas ce cas, mais un modèle peut être modélisé selon vos besoins. Si une commande échoue, le client qui l'invoque doit recevoir une preuve de l'état, et éventuellement déployer une réaction appropriée. Forcer le client à vérifier si l'action a réussi était source d'erreurs et produisait du code dupliqué. De plus, il y a des cas où la commande produit un résultat (par exemple, une commande qui ajoute une ligne à un graphique, aura d'une manière ou d'une autre l'identifiant de la ligne à renvoyer au client), et prétendre avoir des commandes sans état signifiait que vous deviez "repêcher" le nouvel identifiant d'objet dans le modèle de données.
Finalement, nous avons trouvé un compromis en ne renvoyant pas le statut mais en conservant les identifiants des objets nouvellement créés dans l'objet de commande, et l'application a quand même bien fonctionné, mais je suis maintenant curieux de connaître votre opinion également.
Modifier : J'ai décidé d'ajouter une petite prime. Mon espoir est d'enrichir la question avec des cas réels d'utilisation du pattern Command dans des environnements de production.
Edit 2 : Remettre la question avant la fin du bounty (demain)