2008-12-19 25 views

Respuesta

12

Tiene razón, patrón de acción == patrón de comando. Lo oyes llamar el patrón de acción más a menudo en el diseño de la GUI, en la forma "en algún botón presionado, realiza esta acción". En el código, el botón estaría conectado con un objeto de acción de algún tipo.

0

El patrón de diseño de acción es el mismo que el patrón de diseño de comando. La acción es una entidad clave, que encapsula información en sí misma con respecto a su comportamiento, qué procesamiento debe hacerse en su método do(), cómo se puede deshacer, y así sucesivamente. Cuando una aplicación o cualquiera de sus componentes se diseña de acuerdo con el patrón de diseño de Acción, entonces toda la actividad en la aplicación se puede representar en forma de acción, cada cosa se puede rehacer/deshacer varias veces. P.ej. Macros de Excel, deshacer/rehacer en editores de texto, etc.

clase Action, que es un bloque de construcción en este patrón de diseño puede ser diseñado de la siguiente manera: -

public interface Action{ 
    public void do(); 
    public void undo(); 
    public void do(int iNoOfTimes); 
} 

public class FileCopyAction implements Action{ 
    private int iActionId; 
    public void do(){} 
    public void undo(){} 
    public void do(int iNoOfItems){} 
} 

espero que ayude.

1

Estoy leyendo "The Action/Executor Pattern" en MSDN en este momento, y tengo que estar en desacuerdo con la premisa de que los patrones de Comando y Acción/Ejecutor son los mismos.

partir de la descripción de la Command Pattern en SourceMaking.com:

  • encapsular una solicitud como un objeto, permitiendo de ese modo que la parametrización de clientes con diferentes solicitudes, cola o registrar solicitudes, y apoyar las operaciones se pueden deshacer.
  • Promover "la invocación de un método en un objeto" a la condición de objetos completo
  • Una devolución de llamada

Desde el artículo de MSDN sobre el patrón Acción/Ejecutor orientado a objetos:

El patrón Acción/Ejecutor identifica una estrategia para mapear casos de uso al código, lo que permite una mejor visibilidad y agilidad. Además, aborda los problemas de las entidades contaminantes y omite el uso adecuado de las transacciones.

La diferencia parece ser que una "acción" encapsula una o varias etapas, que cuando se realiza con éxito delegar el control a otro objeto responsable de saber cómo conservar esos cambios en una base de datos, servicio web o un archivo de almacenamiento. La acción está desacoplada de cómo se ejecuta/persiste.

Un "comando" se siente como la mitad del patrón Acción/Ejecutor - la "acción" parece sinónimo de un "comando". El patrón Acción/Ejecutor va un paso más allá y describe otra preocupación cuya responsabilidad es tomar los cambios generados por la "acción" o "comando" y guardarlos en algún lugar.