• Unity实现设计模式——备忘录模式


    Unity实现设计模式——备忘录模式

    它可以在不破坏封装性的前提下捕获一个对象的内部状态,并在对象之外保存这个状态,以便在需要的时候恢复到原先保存的状态。

    源发器(Originator):需要保存和恢复状态的对象。它创建一个备忘录对象,用于存储当前对象的状态,也可以使用备忘录对象恢复自身的状态。
    备忘录(Memento):存储源发器对象的状态。备忘录对象可以包括一个或多个状态属性,源发器可以根据需要保存和恢复状态。
    管理者(Caretaker):负责保存备忘录对象,但不能修改备忘录对象的内容。它可以存储多个备忘录对象,并决定何时将备忘录恢复给源发器。

    1. Memento

    用来记录数据

    class Memento
    {
        private string _state;
    
        // Constructor
        public Memento(string state)
        {
            this._state = state;
        }
    
        // Gets or sets state
        public string State
        {
            get { return _state; }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    2.Caretaker

    用来保存数据的对象

    class Caretaker
    {
        private Memento _memento;
    
        // Gets or sets memento
        public Memento Memento
        {
            set { _memento = value; }
            get { return _memento; }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    3.Originator

    class Originator
    {
        private string _state;
    
        // Property
        public string State
        {
            get { return _state; }
            set
            {
                _state = value;
                Debug.Log("State = " + _state);
            }
        }
    
        // Creates memento 
        public Memento CreateMemento()
        {
            return (new Memento(_state));
        }
    
        // Restores original state
        public void SetMemento(Memento memento)
        {
            Debug.Log("Restoring state...");
            State = memento.State;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    4.测试

    public class MementoStructure : MonoBehaviour
    {
    	void Start ( )
        {
            Originator o = new Originator();
            o.State = "On";
    
            // Store internal state
            Caretaker c = new Caretaker();
            c.Memento = o.CreateMemento();
    
            // Continue changing originator
            o.State = "Off";
    
            // Restore saved state
            o.SetMemento(c.Memento);
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
  • 相关阅读:
    【Android Studio程序开发】文本设置--设置文本的大小
    python集成乐玩插件
    oracle11g-图形安装(centos7)
    RabbitMQ可靠发布-SpringBoot
    从零开始学习 Java:简单易懂的入门指南之异常(二十八)
    【C++】---string的OJ题
    【python算法学习1】用递归和循环分别写下 fibonacci 斐波拉契数列,比较差异
    时隔六年,苹果超越vivo,再次成为中国市场最大智能手机厂商
    Kubernetes部署工具Sealos
    【Java】什么是API
  • 原文地址:https://blog.csdn.net/zzzsss123333/article/details/133681080