Para que serve a classe "Memento" no padrão de design do Memento?

8

No padrão de design "Memento" do Gang of Four , a Mementoclasse parece um invólucro inútil que na verdade não fornece nenhum valor para mim.

Para que serve? Existe alguma razão para você não poder simplesmente passar o Stringobjeto (no exemplo da Wikipedia)?

Jonas H.
fonte

Respostas:

11

A classe memento é aquela que contém os diferentes estados com os quais você está lidando no seu objeto - é o que habilita a funcionalidade "desfazer / refazer".

O exemplo ao qual você se vinculou na Wikipedia é bastante simplista, onde o "estado" é apenas um valor de string. Considere que o estado pode ser um monte de propriedades que você pode restaurar em "lote" e talvez tenha vários pontos "desfazer".

Oded
fonte
4
Observe também que o uso .clone()desse exemplo da wikipedia é uma prática extremamente ruim. Nunca funcionará como você deseja, especialmente nesse padrão. Quem escreveu esse exemplo precisa que o teclado seja retirado.
O objeto de lembrança no padrão de lembrança 'vanilla' é usado puramente para ativar "desfazer". O exemplo wikipedia (que realmente não é tão ruim IMO) parece suportar isso ...
vaughandroid