J'utilise le modèle de commande pour passer une commande d'un client à un serveur via un socket TCP/IP. Le serveur prendra l'objet de commande, le désérialisera puis appellera execute() sur l'objet de commande. Cependant, j'ai besoin de renvoyer une valeur à l'appelant sur le socket. Est-ce que le modèle de commande le permet? Sinon, y a-t-il un travail? J'ai regardé l'exemple du commutateur de lumière sur wikipedia, ce qui est génial, mais il n'y a pas de valeurs de retour. Tout conseil grandement apprécié.Motif de commande - Renvoie une valeur
Répondre
Vous ne devriez pas avoir une méthode "execute()" sur le Command
envoyé au serveur distant, c'est mauvais de plusieurs façons, surtout en Java. Le Command
doit représenter l'action que le destinataire doit effectuer. Ce qui dans ce cas est d'appeler une méthode sur un objet.
Le motif Command
représente les actions entreprises ou à entreprendre, et non l'implémentation de ces actions. Pensez plus à un ensemble d'instructions à effectuer.
Ce que vous décrivez est essentiellement un mécanisme d'appel RPC sur-ingénieur. Ne réinventez pas cette roue. Regarde les mécanismes RPC existants, il y a beaucoup à choisir dans le monde Java. Ensuite, vous devez décider si le RPC est synchrone ou asynchrone.
Une API basée sur REST est ce qui est populaire et durera plus longtemps en tant qu'API que n'importe quel mécanisme spécifique au langage natif tel que RMI.
Bon point. Pensez-vous que RMI serait un bon ajustement pour ce scénario par opposition aux sockets dans le contexte de mon problème? RMI me donnera des talons qui peuvent être invoqués directement par le client non? Cela semble être une approche beaucoup plus agréable. Merci encore pour les pointeurs. – Joeblackdev
Je viens de découvrir que RMI est un non-go avec Android. D'autres suggestions? Merci encore – Joeblackdev
Une simple API basée sur REST est ce qui est en vogue aujourd'hui. Et je ne parle pas de RPC sur HTTP, je veux dire de réel REST. -> http://www.vertigrated.com/blog/2009/10/this-isnt-rest-this-is-rpc/ –
- 1. Motif de commande - paramètres
- 2. DTO/Motif Commande Question
- 3. flume ligne de commande renvoie une erreur
- 4. L'accès renvoie une valeur différente
- 5. Motif de commande et modèle de visiteur
- 6. Motif de commande sans fonctions virtuelles (C++)
- 7. Motif de commande et conception des paramètres
- 8. motif regex renvoie toujours faux sur glassFish
- 9. Motif de commande: client et invocateur
- 10. GWT.getModuleBaseURL() renvoie une valeur incorrecte
- 11. CL_DEVICE_GLOBAL_MEM_SIZE renvoie une valeur incorrecte
- 12. SPContext.Current.Web.CurrentUser renvoie une valeur trompeuse
- 13. dependsOnMethods qui renvoie une valeur
- 14. Hash renvoie une valeur négative
- 15. getRGB renvoie une valeur différente
- 16. HttpContext.Current.Request.Url.Host renvoie une valeur incorrecte
- 17. Html.Hidden renvoie une valeur différente
- 18. Pourquoi renvoie une valeur nulle?
- 19. fscanf() renvoie une valeur négative
- 20. iterator.hasNext() renvoie une valeur erronée
- 21. WebConsumer.ProcessUserAuthorization renvoie une valeur nulle
- 22. getCharacterOffset() renvoie une valeur incorrecte
- 23. L'enfilage .NET renvoie une valeur?
- 24. Pourquoi smtp.gmail.com renvoie une commande non reconnue?
- 25. Renvoie une valeur de la fenêtre contextuelle
- 26. problème renvoie une valeur de lien cliqué
- 27. reflect.Value.MapIndex() renvoie une valeur différente de reflect.ValueOf()
- 28. Renvoie une valeur de JQuery Widget
- 29. GetThreadLocale renvoie une valeur différente de GetUserDefaultLCID?
- 30. Annulation d'un script shell si une commande renvoie une valeur non nulle?
Pouvez-vous expliquer pourquoi vous devez renvoyer une valeur à l'appelant? Peut-être que plus de contexte aidera. – Ocelot20
Je suis un grand croyant dans les modèles. Cependant, ils ne devraient être utilisés que pour ce qu'ils ont été conçus pour. Ma perception de la valeur du modèle de commandement ne semble pas correspondre à ce que vous avez décrit, jusqu'à présent. Pourriez-vous développer ce que vous pensez que le modèle de commande achète pour vous dans votre implémentation et pourquoi vous l'utilisez? – rfeak
http://stackoverflow.com/questions/1154935/command-pattern-returning-status est une question similaire – nos