Modo Memo: archivar y leer archivos

  Definición del modo Memento (Memento) : bajo la premisa de no destruir el encapsulado, capturar el estado interno de un objeto y guardar este estado fuera del objeto. De esta forma, el objeto se puede restaurar a su estado original en el futuro. Este modo también se denomina modo de instantánea.

  Escenario de uso :

  • Al usar el modo de comando, debe realizar la cancelación del comando
  • Restaurar un estado incorrecto o no válido

  Estructura :

  • Rol del originador: registra la información del estado interno actual, proporciona las funciones de creación de notas y restauración de datos de notas, y realiza otras funciones comerciales. Puede acceder a toda la información en la nota.
  • Función de recuerdo: responsable de almacenar el estado interno del iniciador y proporcionar estos estados internos al iniciador cuando sea necesario.
  • Rol de administrador (cuidador): administra notas, proporciona las funciones de guardar y obtener notas, pero no pueden acceder ni modificar el contenido de las notas.
    Inserte la descripción de la imagen aquí
    Inicia la humanidad:
    class Originator    //发起人类
    {
    
    
        private string state;
        public string State//状态,可读可写
        {
    
    
            get {
    
     return state; }
            set {
    
     state = value; }
        }
        public Memento CreateMemento()//创建备忘录
        {
    
    
            return (new Memento(state));//返回创建的备忘录实例,这个实例是有状态的
        }
        public void SetMemento(Memento memento)//恢复备忘录,将备忘录导入并将相关数据恢复
        {
    
    
            state = memento.State;
        }
        public void Show()//显示数据
        {
    
     Console.WriteLine("State="+state); }
    }

Categoría de nota:

    class Memento   //备忘录类
    {
    
    
        private string state;
        public Memento(string state)//构造方法
        {
    
    
            this.state = state;
        }
        public string State//只读,需要保存的状态
        {
    
    
            get {
    
     return state; }
        }
    }

Clase de administrador:

    class Caretaker //管理者类
    {
    
    
        private Memento memento;
        public Memento Memento     //得到或设置备忘录
        {
    
    
            get {
    
     return memento; }
            set {
    
     memento = value;}
        }
    }

Cliente:

        static void Main(string[] args)
        {
    
    
            Originator o = new Originator();
            o.State = "On";
            o.Show();

            //保存状态时,由于进行了封装,可以隐藏Originator的实现细节
            Caretaker c = new Caretaker();
            c.Memento = o.CreateMemento();//创建状态为On的备忘录实例,并赋给Memento属性

            o.State = "Off";
            o.Show();

            o.SetMemento(c.Memento);
            o.Show();

            Console.Read();
        }

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/CharmaineXia/article/details/111144210
Recomendado
Clasificación