Jestem w procesie projektowania aplikacji i chciałbym użyć funkcji command pattern do cofania/ponawiania. Zrobiłem pewne badania wzoru poleceń, ale jedyne, czego nie dostaję, to: czy polecenie ma metody cofania i ponawiania, czy też powinienem wykonać dwa oddzielne polecenia, jeden dla cofnięcia i drugi dla ponownego wykonania, i wywołać te z polecenia samo polecenie główne?Implementowanie wzorca polecenia
Odpowiedz
Obiekt polecenia powinien zaimplementować funkcję cofania/ponawiania.
Polecenia są zwykle popychane i wybierane ze stosu obsługiwanego przez menedżera poleceń w celu zaimplementowania cofania wielopoziomowego. Gdy polecenia są wykonywane, są one popychane na stos, a kiedy są cofane, są wyskakiwane ze stosu.
Wzorzec memento byłby używany w połączeniu ze wzorcem poleceń, nie zastępuje użycia wzorca polecenia. Byłby używany do utrzymywania stanu wymaganego do operacji cofania.
Możesz również rozważyć wzorzec memento, użyjemy go i zadziała genialnie, aby cofnąć.
Czy wzorzec memento będzie mniej czasochłonny do implementacji niż wzorzec poleceń, gdy chcę go tylko cofnąć? – slayerIQ
@slayerIQ Wzorzec memento byłby używany w połączeniu ze wzorcem poleceń, nie zastępuje użycia wzorca polecenia. – David
A więc pamiątka będzie zawierała cofanie i powtarzanie stosów, a stosy będą zawierały polecenia, czy mam rację? – slayerIQ
- 1. Implementowanie ogólnego wzorca repozytorium za pomocą starego ado.net
- 2. Interfejsy dla wzorca polecenia w Javie
- 3. Przykład światowego przykładu zastosowania wzorca polecenia
- 4. Wyrażenie regularne pasujące do wzorca wewnątrz polecenia awk
- 5. Implementowanie pierwszego pasującego algorytmu:
- 6. Implementowanie kodu GetHash poprawnie
- 7. Implementowanie niekompatybilnych interfejsów
- 8. Implementowanie niebezpiecznych interfejsów Java
- 9. Implementowanie History.js HTML4 Fallback
- 10. Implementowanie interfejsu View.IOnTouchListener
- 11. Cython - implementowanie wywołań zwrotnych
- 12. Implementowanie protokołu AirDrop
- 13. Implementowanie Java Comparator
- 14. Implementowanie wewnętrznego niestatycznego interfejsu
- 15. Implementowanie alternatywnych formularzy LDA
- 16. Implementowanie zakresów w Pundit
- 17. Implementowanie StringLiteralConvertible na NSURL
- 18. Synonimy wzorca prowadzą do niewyczerpującego dopasowywania wzorca
- 19. Implementowanie właściwości interfejsu w interfejsach?
- 20. Implementowanie interfejsu z metodami ogólnymi
- 21. Implementowanie wartości klucza w XSLT
- 22. Android - Implementowanie obsługi pakietów ikon
- 23. Implementowanie ClickHandler w niestandardowym Widget
- 24. Implementowanie logowania bezpiecznego dla wątków
- 25. Implementowanie akcesoriumButtonTappedForRowWithIndexPath: w Swift 2
- 26. Obserwowalne implementowanie wzorców w Javie
- 27. Implementowanie programu ładującego klasy filtrowania
- 28. implementowanie foreach (doseq) w clojure
- 29. Implementowanie kolejki opartej na plikach
- 30. Implementowanie stosu przy użyciu BST
Dodam, że lepszym rozwiązaniem nie jest zwykły stos. Zamiast tego potrzebujesz listy i odniesienia do bieżącego elementu. Cofanie spacerów z powrotem do referencji, a * ponowne wybieranie * idzie do przodu. Używanie stosu nie pozwala na ponowienie. – munificent
Użyłem 2 stosów, cofania i ponawiania stosu. Jeśli cofniesz akcję, wyskakuje ze stosu cofania i przesuwa się na stos redo. Dodanie nowej akcji powoduje przejście do stosu cofania i wyczyszczenie stosu powtórzeń. – Wout