Treci la conținutul principal

Ce este

Șablonul Comandă (Command) transformă o acțiune într-o valoare: un obiect care știe să se execute singur — și adesea să se anuleze singur. Acțiunile ca valori pot fi păstrate în liste, puse la coadă, amânate, înregistrate în jurnal și reluate.

Din momentul în care ai nevoie de anulare (undo), ai nevoie de comenzi: ceva trebuie să țină minte ce s-a făcut, ca să facă opusul.


Exemplu: scriere cu anulare

Fiecare cuvânt adăugat în document este o comandă cu execute() și undo(). Comenzile executate ajung într-o listă de istoric — anularea înseamnă pur și simplu să-i ceri ultimei comenzi să se inverseze singură.

Acțiuni care se pot inversa singure

Greșeala de tipar „wrold” este eliminată nu de un cod special, ci de comanda care a adăugat-o — doar ea știe exact ce trebuie să ia înapoi.

Prompt
Scrie un program Python cu șablonul Comandă: un protocol Command cu metodele execute și undo și o comandă AddText care adaugă un cuvânt într-o listă-document și îl poate elimina din nou. Execută două comenzi (a doua adaugă o greșeală de tipar), păstrează-le într-o listă de istoric, afișează documentul, anulează ultima comandă și afișează-l din nou.
Ieșire: program Python complet

Când să-l folosești

Folosește-l pentru anulare/refacere (undo/redo), cozi de acțiuni, macrocomenzi și jurnale de audit — oriunde acțiunile trebuie păstrate sau inversate.

Renunță la el când acțiunile sunt de tipul „execută și uită”. În Python, o acțiune simplă pusă la coadă este adesea doar o funcție adăugată într-o listă — șablonul complet își merită locul doar când ai nevoie de anulare sau de inspectare.


Avantaje și dezavantaje

Avantaje: anularea/refacerea devine firească; acțiunile pot fi puse la coadă, înregistrate în jurnal și reluate; acțiuni noi se adaugă fără să modifici obiectul care le invocă.

Dezavantaje: câte o clasă pentru fiecare acțiune se adună repede; starea corectă pentru anulare este delicată — o comandă trebuie să rețină tot ce îi trebuie ca să se inverseze.