Estoy usando el patrón de comando para pasar un comando de un cliente a un servidor a través de un socket TCP/IP. El servidor tomará el objeto de comando, lo deserializará y luego ejecutará execute() en el objeto de comando. Sin embargo, necesito pasarle un valor a la persona que llama sobre el socket. ¿El patrón de comando permite esto? Si no, ¿hay una solución alternativa? He visto el ejemplo del interruptor de luz en wikipedia, que es genial, pero no hay valores de retorno. Cualquier consejo muy apreciado.Patrón de comando - devuelve un valor
Respuesta
No debe tener un método "execute()" en el Command
enviado al servidor remoto, esto es malo de muchas maneras, especialmente en Java. El Command
debe representar la acción que debe tomar el destinatario. Que en este caso es llamar a un método en algún objeto.
El patrón Command
es para representar las acciones tomadas o que deben tomarse, no la implementación de esas acciones. Piensa más en un conjunto de instrucciones para llevar a cabo.
Lo que estás describiendo es básicamente un mecanismo de llamada RPC sobreingeniería. No reinventar esta rueda. Mira los mecanismos de RPC existentes, hay mucho para elegir en el mundo de Java. Luego debe decidir si el RPC es síncrono o asíncrono.
Una API basada en REST es lo que es popular y durará más como API que cualquier mecanismo específico del lenguaje nativo como RMI.
Buen punto. ¿Cree que RMI sería una buena opción para este escenario en lugar de sockets en el contexto de mi problema? RMI me dará resguardos que pueden ser invocados directamente por el cliente ¿no? Esto parece un enfoque mucho más agradable. Gracias de nuevo por los indicadores. – Joeblackdev
Acabo de descubrir que RMI es un no-go con Android. ¿Cualquier otra sugerencia? Gracias de nuevo – Joeblackdev
Una API basada en REST simple es lo que está de moda en estos días. Y no me refiero a RPC sobre HTTP, me refiero a REST real. -> http://www.vertigrated.com/blog/2009/10/this-isnt-rest-this-is-rpc/ –
- 1. ¿Cómo `({...})` devuelve un valor?
- 2. Patrón de comando: cómo pasar parámetros a un comando?
- 3. Anulando un script de shell si algún comando devuelve un valor distinto de cero?
- 4. Implementando el patrón de comando
- 5. función anónima no siempre devuelve un valor
- 6. Registry.LocalMachine.OpenSubKey() devuelve un valor nulo
- 7. SPContext.Current.Web.CurrentUser devuelve un valor engañoso
- 8. Macro que devuelve un valor
- 9. Subprocess.poll() devuelve un valor falsamente
- 10. Patrón de comando frente a patrón de visitante
- 11. Uso de un patrón de estrategia y un patrón de comando
- 12. Método de hilo C# ¿devuelve un valor?
- 13. Devuelve el valor de un código Java
- 14. Bash: patrón grep de salida de comando
- 15. Preguntas sobre el patrón de comando (PHP)
- 16. jQuery outerHeight devuelve un valor incorrecto IE
- 17. getPackageManager() (.getInstalledPackages PackageManager.GET_ACTIVITIES) devuelve un valor nulo
- 18. SelectSingleNode siempre devuelve un valor nulo?
- 19. Type.GetType (typeName cadena) devuelve un valor nulo
- 20. Devuelve un valor al usar jQuery.each()?
- 21. Mi bucle solo devuelve un valor
- 22. ¿Por qué readf no devuelve un valor?
- 23. valor Double devuelve 0
- 24. findViewById (android.R.id.progress) devuelve un valor nulo
- 25. ceil C devuelve un valor incorrecto
- 26. Clipboard.GetText devuelve un valor nulo (cadena vacía)
- 27. C# Math.cos (doble) devuelve un valor incorrecto
- 28. ¿Devuelve un valor Y lanza una excepción?
- 29. C# Tarea que devuelve un valor
- 30. NSURL devuelve nil Valor
¿Puede explicar por qué necesita enviar un valor a la persona que llama? Quizás algún contexto más ayudará. – Ocelot20
Soy un gran creyente en los patrones. Sin embargo, solo deben usarse para aquello para lo que fueron diseñados. Mi percepción del valor del patrón de comando no parece coincidir con lo que has descrito hasta ahora. ¿Podría ampliar lo que cree que el patrón de comando compra para usted en su implementación y por qué lo está utilizando? – rfeak
http://stackoverflow.com/questions/1154935/command-pattern-returning-status es una pregunta similar – nos