zapisanie polecenia w dzienniku lub historii zmian).
Konsekwencje użycia Zalety:
oddzielenie operacji od obiektów, na których jest ona wykonywana, polecenia są reprezentowane jako standardowe obiekty, dzięki czemu możemy na nich stosować wszystkie manipulacje dopuszczalne w programowaniu obiektowym, możliwość łączenia elementarnych poleceń w polecenia złożone, łatwość dodawania nowych rodzajów poleceń.
Wady:
każde polecenie wymaga dodatkowej pamięci na zapamiętanie stanu swojego obiektu.
Implementacja Implementacja wzorca wymaga przeanalizowania następujących kwestii:
stopień skomplikowania polecenia — jak dużą odpowiedzialność powinny mieć polecenia? Czy będą to jedynie proste obiekty wykonujące operację na dostarczonym modelu czy też złożone implementacje, które nie delegują do odbiorcy żadnych zadań? czy będziemy obsługiwać wycofywanie operacji — oprócz dodania do interfejsu metody wycofaj(), polecenia muszą również zapamiętywać wystarczająco dużo informacji o stanie, aby umożliwić jego odtworzenie. Wszystkie operacje, jakie wykonujemy na modelu, muszą być wycofywalne i należy dla każdej z nich zaimplementować odpowiednią klasę polecenia. W przeciwnym wypadku wielokrotne wykonywanie i wycofywanie poleceń może doprowadzić do nawarstwiania się błędów oraz utraty bądź uszkodzenia danych.