Aller au contenu

Memento

Contexte : Sans violer l’encapsulation, capturer et externaliser l’état interne d’un objet afin de pouvoir le restaurer plus tard.

public class Memento
{
public string State { get; }
public Memento(string state) => State = state;
}
public class Originator
{
public string State { get; set; }
public Memento Save() => new Memento(State);
public void Restore(Memento m) => State = m.State;
}
public class Caretaker
{
public Memento Memento { get; set; }
}

Mécanisme d’annulation : Un éditeur de texte sauvegarde un memento avant chaque modification. Le responsable (pile d’historique) stocke les mementos pour restaurer les états précédents.

Exemple : En C#, la sérialisation (binaire, XML, JSON) peut être utilisée pour sauvegarder l’état d’un objet – une forme de memento. De même, ITrackable dans Entity Framework Core suit les valeurs originales pour la concurrence.