Memento

Captura y restaura el estado interno de un objeto sin violar su encapsulación.

Contexto

Editor de texto/imagen necesita undo. El estado es complejo (selección, historial, buffers).

Problema

Exponer el estado para guardarlo desde fuera rompe encapsulación.

Solución

El objeto produce un Memento opaco para el exterior; solo él sabe restaurarse desde uno.

#Ejemplo en C#

public class Editor
{
    private string _content = "";

    public Memento Save() => new(_content);
    public void Restore(Memento m) => _content = m.State;

    public class Memento
    {
        internal string State { get; }
        internal Memento(string s) => State = s;
    }
}
Tradeoffs
Pro Contra
Mantiene encapsulación Puede consumir mucha memoria

#behavioral #gof #snapshot