Sono in fase di progettazione di un'applicazione e desidero utilizzare lo command pattern per gli scopi di annullamento/ripristino. Ho fatto qualche ricerca sul pattern di comando ma l'unica cosa che non ottengo è: un comando dovrebbe avere i metodi di annulla e ripeti, o dovrei fare due comandi separati, uno per annullare e uno per ripetere, e chiamare quelli dal comando principale stesso?Implementazione del pattern di comando
risposta
L'oggetto comando stesso dovrebbe implementare la funzionalità di annullamento/ripristino.
I comandi vengono generalmente inseriti e interrotti da una pila gestita da un gestore comandi per implementare l'annullamento a più livelli. Quando i comandi vengono eseguiti, vengono messi in pila e quando vengono annullati vengono prelevati dalla pila.
Il pattern di memento sarebbe utilizzato insieme al pattern di comando, non sostituisce l'utilizzo del pattern di comando. Sarebbe usato per mantenere lo stato richiesto per l'operazione di annullamento.
Si potrebbe anche voler considerare il modello di memento per questo, lo usiamo e funziona brillantemente per annullare.
Il pattern di memoria richiederà meno tempo per implementare il pattern di comando quando lo voglio solo per annullare? – slayerIQ
@slayerIQ Il pattern di memento verrebbe utilizzato insieme al pattern di comando, non sostituisce l'utilizzo del pattern di comando. – David
Quindi il ricordo dovrebbe contenere l'annullamento e ripetere gli stack, E gli stack conterranno i comandi, ho ragione? – slayerIQ
- 1. Implementazione del pattern MVC
- 2. Implementazione del pattern di repository in Python?
- 3. Implementazione del pattern produttore-consumatore in Ruby
- 4. Implementazione del pattern decorator in Python
- 5. Implementazione del pattern di eventi di dominio in Java?
- 6. Implementazione pattern osservabile in Java
- 7. Implementazione di pattern DAO su progetto Android
- 8. Entity Framework Specification Pattern Implementazione
- 9. Implementazione del comando ls -al in C
- 10. Implementazione di un pattern NullObject in Rails
- 11. Prova/fare implementazione pattern in Java
- 12. Implementazione di Windows C# del comando dd linux
- 13. Implementazione cross-browser di "HTTP Streaming" (push) Pattern AJAX
- 14. Implementazione del pattern Visitor consentendo diversi tipi di restituzione delle funzioni
- 15. Implementazione del modello di visitatore in C#
- 16. implementazione del database python
- 17. Implementazione del modello di repository
- 18. Implementazione del pattern Chain of responsibility in python usando le coroutine
- 19. Problemi nell'implementazione del pattern "Observer"
- 20. Violazione del pattern MVVM: MediaElement.Play()
- 21. Qual è l'opposto del pattern di osservatore?
- 22. Pattern di manipolazione del codice byte
- 23. Implementazione del colore personalizzato
- 24. Implementazione del contesto
- 25. Implementazione del protocollo bittorrent
- 26. Implementazione del client COMET
- 27. Implementazione del corridoio NetHack
- 28. implementazione dichiarazione di rendimento
- 29. Implementazione del protocollo AirDrop
- 30. Implementazione del tratto dimensionato
Vorrei aggiungere che una soluzione migliore non è solo una semplice pila. Invece, vuoi una lista e un riferimento all'elemento corrente. Annullare riporta indietro il riferimento e * lo ripete * lo porta avanti. L'utilizzo di una pila non ti consente di ripetere. – munificent
Ho usato 2 stack, annullare e ripetere lo stack. Se si annulla un'azione, questa si apre dallo stack di annullamento e passa alla pila di ripetizioni. L'aggiunta di una nuova azione ne spinge uno nuovo nello stack di annullamento e la cancellazione della pila di ripetizione. – Wout