2012-10-09 66 views
6

Estoy trabajando en una aplicación y tratando de seguir los principios SÓLIDOS de Robert C. Martin. Estoy usando Command Pattern y me preguntaba sobre la implementación. En todos sus ejemplos en Clean Code y Agile Principles, Patterns and Practices en C#, sus objetos de comando nunca devuelven nada. Su interfaz de comando es;Uso del patrón de comando para devolver datos

public interface Command 
{ 
    void Execute(); 
} 

Todos los ejemplos son "AddEmployee", "DelEmployee", "EditEmployee", etc. ¿Tendría un comando que sería "GetAllEmployees" o hay alguna otra "interactiano" especial que crearía para ese propósito específico? Una forma en que estoy pensando en manejar ese caso específico es tener dos interfaces, una no genérica como la anterior y una genérica como esta;

public interface Command<T> 
{ 
    T Execute(); 
} 

Lo que estoy preguntando es ¿sería aceptable una implementación de este patrón o hay otra manera tendríamos acceso a los datos de la aplicación?

+1

Parece que está intentando implementar CQS (segregación de comando y consulta). Los comandos nunca deben devolver ningún dato. Para las consultas tiene objetos de consulta específicos. Simplemente cambie el nombre de 'Comando ' a 'Consultar ' y estará bien. – alexn

Respuesta

5

Un comando es algo que cambia de estado (actualizaciones, eliminaciones o adiciones).

Al obtener datos (y no cambiarlos), utilizaría una consulta .

Ver también CQS y el relacionado CQRS.

+3

Creo que introducir CQRS aquí puede causar mucha confusión. – alexn

Cuestiones relacionadas