Wzorzec projektowy pamiątka - memento
Stronę tą wyświetlono już: 3218 razy
Opis wzorca projektowego pamiątka
Wzorzec projektowy pamiątka należy do wzorców czynnościowych. Celem jego jest zaimplementowanie możliwości stworzenia kopii danych przechowywanych w obiekcie lub obiektach klasy. Pamiątka stosowana jest do implementacji cofania i przywracania zmian często spotykanych w programach graficznych czy też tekstowych. Pamiątka może też być swego rodzaju systemem pozwalającym np. zapisywać różne stany gry na dysku twardym, lub przywracać fabryczne ustawienia programu.
Przykładowy diagram UML dla wzorca projektowego pamiątka
Na poniższym diagramie UML klasa Value agreguje klasę Mementos, która zajmuje się wykonywaniem brudnej roboty związanej z obsługą dodawania i usuwania pamiątek a także (częściowo) cofania i przywracania. Klasa Mementos agreguje wielokrotnie Memento. Klasa Value wywołuje odpowiednie metody klasy Mementos przy każdej operacji wpływającej na zmianę stanu obiektu dodając nowy obiekt klasy Memento do klasy Mementos.
Przykładowa implementacja wzorca projektowego pamiątka w C++
Wynik działania powyższego kodu:
Memento was added! What you want to do? Add [0] Subtract [1] Undo [2] Redo [3] Exit [4] 0 Write some value to add: 1 Value before add 0 Value after add 1 Memento was added! What you want to do? Add [0] Subtract [1] Undo [2] Redo [3] Exit [4] 1 Write some value to subtract: 2 Value before subtract 1 Value after subtract -1 Memento was added! What you want to do? Add [0] Subtract [1] Undo [2] Redo [3] Exit [4] 2 Undo action! Value before undo -1 Value after undo 1 What you want to do? Add [0] Subtract [1] Undo [2] Redo [3] Exit [4] 2 Undo action! Value before undo 1 Value after undo 0 What you want to do? Add [0] Subtract [1] Undo [2] Redo [3] Exit [4] 2 You can not undo my old Yedi friend! What you want to do? Add [0] Subtract [1] Undo [2] Redo [3] Exit [4] 3 Redo action! Value before redo 0 Value after redo 1 What you want to do? Add [0] Subtract [1] Undo [2] Redo [3] Exit [4] 3 Redo action! Value before redo 1 Value after redo -1 What you want to do? Add [0] Subtract [1] Undo [2] Redo [3] Exit [4] 3 You can not redo my old Yedi friend! What you want to do? Add [0] Subtract [1] Undo [2] Redo [3] Exit [4]
Tytuł:
C++. Projektowanie oprogramowania. Zasady i wzorce projektowe
Autor:
Klaus Iglberger
Tytuł:
Wzorce projektowe. Rusz głową! Tworzenie rozszerzalnego i łatwego w utrzymaniu oprogramowania obiektowego. Wydanie II
Autor:
Eric Freeman, Elisabeth Robson
Tytuł:
React 17. Wzorce projektowe i najlepsze praktyki. Projektowanie i rozwijanie nowoczesnych aplikacji internetowych. Wydanie III
Autor:
Carlos Santana Roldán
Tytuł:
Wzorce projektowe. Rusz głową! Tworzenie rozszerzalnego i łatwego w utrzymaniu oprogramowania obiektowego. Wydanie II
Autor:
Eric Freeman, Elisabeth Robson
Tytuł:
Wzorce projektowe w .NET Core 3. Projektowanie zorientowane obiektowo z wykorzystaniem C# i F#
Autor:
Dmitri Nesteruk
Tytuł:
Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku
Autor:
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
Tytuł:
Projektowanie interfejsów., Sprawdzone wzorce projektowe. Wydanie III
Autor:
Jenifer Tidwell, Charles Brewer, Aynne Valencia-Brooks
Tytuł:
Kubernetes. Wzorce projektowe. Komponenty wielokrotnego użycia do projektowania natywnych aplikacji chmurowych
Autor:
Bilgin Ibryam, Roland Huß
Tytuł:
Wzorce projektowe w .NET. Projektowanie zorientowane obiektowo z wykorzystaniem C# i F#
Autor:
Dmitri Nesteruk
Tytuł:
Programowanie zorientowane obiektowo. Wzorce projektowe. Wydanie II
Autor:
Alan Shalloway, James R. Trott