Je suis assez nouveau à ce modèle ...Une fonction anonyme est-elle un bon moyen d'implémenter le modèle de commande?
Répondre
Si vous avez des lambdas, vous n'avez pas vraiment besoin de la moitié des "motifs".
Usine? C'est juste une fonction renvoyant de nouveaux objets. Visiteur? Duh! Commander? Fonction anonyme Interprète? Fonction qui prend la chaîne ou peu importe. Stratégie? C'est une fonction!
Ce sont juste des lambdas, des fonctions et des fermetures.
Alors oui, vous pouvez utiliser anonyme (ou autrement nommés) fonctions où vous utilisez le modèle de commande.
Je dirais non, parce qu'une fonction ne peut pas vraiment encapsuler les détails d'une commande, et si elle est anonyme, comment l'appelant et l'appelé peuvent-ils comprendre ce que cela représente?
(Si l'on voulait être pédant, la description GoF du pattern Copmmand décrit spécifiquement l'utilisation d'un objet pour faire l'encapsulation, excluant une implémentation basée sur la fonction, bien que cela soit du nit-picking).
pouvez-vous expliquer cela plus en détail? Quels détails ne peuvent pas être encapsulés? – Iain
Si votre commande ne prend en charge qu'une seule opération, vous pouvez utiliser une fonction anonyme en toute sécurité.
Cependant, il n'est pas rare d'avoir plus d'une opération pour chaque commande. Par exemple. DoCommand/UndoCommand pour annuler/refaire la gestion. Ou CanExecuteCommand/ExecuteCommand pour activer/désactiver les fonctionnalités de l'interface utilisateur pour la commande. Ou quelque chose comme GetLocalizedCommandName. J'utiliserais une interface dans ces cas (au lieu par exemple d'un tuple de fonctions anonymes).
- 1. La liaison de données est un bon moyen de connecter une vue à un modèle
- 2. variables statiques dans une fonction anonyme
- 3. Quel est un bon moyen d'assigner un objet modèle à un symbole après l'avoir sauvegardé?
- 4. Bon moyen de faire un "switch" dans un Makefile
- 5. Quel est un bon moyen de gérer Postfix?
- 6. Un bon moyen d'exécuter le script JQuery suivant?
- 7. Bash: sélectionne une commande précédente qui correspond à un modèle
- 8. Un moyen d'intégrer un commentaire dans une commande Tcl?
- 9. Un bon moyen d'avoir un fil de travail sans fin?
- 10. Suggérer un bon moyen de mettre à jour le serveur de transfert en utilisant svn
- 11. Accéder à un Jbutton "anonyme" dans une classe anonyme d'une autre classe anonyme?
- 12. Comment exécuter plusieurs instructions dans une fonction anonyme MATLAB?
- 13. Meilleur moyen de passer un fichier à une fonction
- 14. Comment utiliser le modèle de commande pour réduire la complexité d'un menu?
- 15. Quel est un bon moyen de générer des rapports de disponibilité pour une application Web?
- 16. Erlang: comment puis-je faire référence à une fonction anonyme dans le corps?
- 17. Bon moyen de créer une boucle inactive en C#?
- 18. Quelqu'un a un bon moyen de déboguer WPF focus?
- 19. Existe-t-il un moyen d'obtenir le nom d'une fonction dans une fonction C++?
- 20. Comment puis-je appeler une fonction anonyme (stockée dans une chaîne) avec un argument en JavaScript?
- 21. Quel est un bon moyen de rendre les polices décrites?
- 22. jQuery Ajax succès fonction anonyme portée
- 23. Quel est le moyen le plus simple d'implémenter une fonction de recherche sur un site Web?
- 24. Est-ce un bon moyen de faire JS OOP?
- 25. Quel est un bon moyen de déboguer le contenu et la destination des messages Windows?
- 26. Un bon moyen de vérifier les appels Java Reflection?
- 27. Un pointeur de fonction qui pointe vers une fonction qui prend un objet d'une classe de modèle avec ledit pointeur de fonction comme argument de modèle. Possible?
- 28. Est-ce un bon moyen d'être root dans un makefile?
- 29. Exemple de modèle de commande WPF personnalisé
- 30. Quel est un bon moyen de paramétrer un ValueConverter utilisé dans un ControlTemplate?
Quelle est la différence entre une fonction lambda et une fonction anonyme? – Iain
Ce sont des synonymes, je suppose. – alamar
Non, il existe de légères différences - http://blogs.msdn.com/ericlippert/archive/2007/01/10/lambda-expressions-vs-anonymous-methods-part-one.aspx –