2012-10-09 13 views
6

Pracuję nad aplikacją i staram się przestrzegać SOLIDNYCH zasad Roberta C. Martina. Używam wzorca poleceń i zastanawiałem się nad implementacją. We wszystkich jego przykładach w Clean Code i Agile Principles, Patterns and Practices w języku C# jego obiekty poleceń nigdy nie zwracają niczego. Jego interfejs poleceń jest;Wykorzystanie wzorca poleceń do zwracania danych

public interface Command 
{ 
    void Execute(); 
} 

Wszystkie przykłady są „AddEmployee”, „DelEmployee”, „EditEmployee”, itd. Czy mam polecenie, które byłyby „GetAllEmployees” czy jest jakiś inny specjalny „interaktora” Chciałbym stworzyć dla ten konkretny cel? Jednym ze sposobów, w jaki myślę o tym konkretnym przypadku, jest posiadanie dwóch interfejsów, które nie są generyczne, jak ten powyżej i taki ogólny;

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

Co Pytam to byłoby to dopuszczalne realizacja tego wzorca czy istnieje inny sposób chcemy uzyskać dostęp do danych z aplikacji?

+1

Wygląda na to, że próbujesz wdrożyć CQS (rozróżnianie poleceń i segregacji zapytań). Polecenia nigdy nie powinny zwracać żadnych danych. W przypadku zapytań masz określone obiekty zapytań. Po prostu zmień 'Command ' na 'Query ' i jesteś dobry. – alexn

Odpowiedz

5

Komenda jest czymś, co zmienia stan (aktualizacje, usuwanie lub dodatki).

Podczas pobierania danych (i ich niezmieniania) należy użyć zapytania .

Zobacz także CQS i powiązane CQRS.

+3

Myślę, że wprowadzenie tutaj CQRS może spowodować wiele zamieszania. – alexn

Powiązane problemy