Pamiątka (wzorzec projektowy)

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

Pamiątka (ang. Memento) – czynnościowy wzorzec projektowy. Jego zadaniem jest zapamiętanie i udostępnienie na zewnątrz wewnętrznego stanu obiektu bez naruszania hermetyzacji. Umożliwia to przywracanie zapamiętanego stanu obiektu[1][2].

Przykład zastosowania[edytuj | edytuj kod]

Pamiątka może zostać wykorzystana w procesorze tekstu do zaimplementowania operacji "Cofnij" oraz "Ponów". Za każdym razem kiedy użytkownik wykonuje jakąś akcję – wprowadza tekst, zmienia wielkość czcionki czy jej kolor – tworzony jest obiekt pamiątki zapamiętujący bieżący stan dokumentu. Gdy użytkownik zleci wycofanie ostatniej operacji, stan dokumentu zostanie odtworzony za pomocą wcześniej zapisanej pamiątki.

Inny przykład zastosowania tego wzorca projektowego to ziarno generatora liczb pseudolosowych czy pojedynczy stan automatu skończonego[3].

Struktura wzorca[edytuj | edytuj kod]

Diagram klas wzorca Pamiątka

Wzorzec Pamiątka składa się z[1]:

  • klasy Originator z metodami CreateMemento i SetMemento,
  • klasy Memento zawierającej metody SetState oraz GetState, umożliwiających obiektowi odpowiednio zapisanie swojego stanu do pamiątki albo pobranie zapisanego stanu obiektu, dla którego została stworzona pamiątka,
  • klasy Caretaker, która odpowiada za przechowywanie stworzonych pamiątek.

Konsekwencje stosowania[edytuj | edytuj kod]

Jedną z konsekwencji stosowania tego wzorca jest umożliwienie zachowania hermetyzacji obiektu dla którego tworzona jest pamiątka. Jedną z wad Pamiątki jest to, że ich używanie może być kosztowne jeżeli chodzi o wykorzystywaną pamięć[1].

Przypisy

  1. 1,0 1,1 1,2 Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Inżynieria oprogramowania: Wzorce projektowe (Wyd. II). Warszawa: WNT, 2008, s. 349-358. ISBN 978-83-204-3472-9.
  2. Opis wzorca na stronie SourceMaking (ang.).
  3. Design Patterns (2) (ang.). [dostęp 2012-06-18].