← Back to home

Memento

By Pscodium · 8/4/2026 · 3 views

Memento

O Memento é um padrão comportamental utilizado para salvar e restaurar o estado anterior de um objeto sem expor seus detalhes internos.

É muito utilizado para implementar:

Undo
Histórico
Snapshots
Rollback

Imagine um editor de texto.

O usuário escreve:

Olá

Depois:

Olá mundo

E finalmente:

Olá mundo!

Se o usuário clicar em Ctrl + Z, precisamos restaurar um estado anterior.


Implementação

Nosso objeto:

class Editor {

  private content = "";

  write(text: string) {
    this.content += text;
  }

  getContent() {
    return this.content;
  }

  save() {
    return new EditorMemento(
      this.content
    );
  }

  restore(
    memento: EditorMemento
  ) {
    this.content =
      memento.getContent();
  }
}

O Memento:

class EditorMemento {

  constructor(
    private content: string
  ) {}

  getContent() {
    return this.content;
  }
}

Agora podemos salvar:

const editor =
  new Editor();

editor.write("Olá");

const snapshot =
  editor.save();

Alteramos:

editor.write(
  " mundo"
);

Estado:

Olá mundo

Podemos restaurar:

editor.restore(
  snapshot
);

Resultado:

Olá

Histórico

Podemos armazenar vários Mementos:

const history:
  EditorMemento[] = [];

history.push(
  editor.save()
);

editor.write(
  "Olá mundo"
);

history.push(
  editor.save()
);

editor.write("!");

history.pop();

editor.restore(
  history[history.length - 1]
);

Isso permite criar sistemas de histórico.


Exemplo real: Jogos

Imagine um jogo:

Estado atual
     ↓
Salvar
     ↓
Jogar
     ↓
Morrer
     ↓
Carregar Save

O Memento pode armazenar:

{
  level: 5,
  health: 80,
  coins: 300,
  position: {
    x: 100,
    y: 200
  }
}

O jogo pode restaurar o estado anterior.


Quando usar?

Memento é útil para:

  • Undo/Redo.
  • Histórico de alterações.
  • Save games.
  • Snapshots.
  • Rollback.

A ideia principal é:

Capturar o estado de um objeto para que ele possa ser restaurado posteriormente.



Comments

No comments yet.