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; }}Exemple d’utilisation dans le monde réel
Section intitulée « Exemple d’utilisation dans le monde réel »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.