Unity实现设计模式——备忘录模式
它可以在不破坏封装性的前提下捕获一个对象的内部状态,并在对象之外保存这个状态,以便在需要的时候恢复到原先保存的状态。
源发器(Originator):需要保存和恢复状态的对象。它创建一个备忘录对象,用于存储当前对象的状态,也可以使用备忘录对象恢复自身的状态。
备忘录(Memento):存储源发器对象的状态。备忘录对象可以包括一个或多个状态属性,源发器可以根据需要保存和恢复状态。
管理者(Caretaker):负责保存备忘录对象,但不能修改备忘录对象的内容。它可以存储多个备忘录对象,并决定何时将备忘录恢复给源发器。
1. Memento
用来记录数据
class Memento
{private string _state;// Constructorpublic Memento(string state){this._state = state;}// Gets or sets statepublic string State{get { return _state; }}
}
2.Caretaker
用来保存数据的对象
class Caretaker
{private Memento _memento;// Gets or sets mementopublic Memento Memento{set { _memento = value; }get { return _memento; }}
}
3.Originator
class Originator
{private string _state;// Propertypublic string State{get { return _state; }set{_state = value;Debug.Log("State = " + _state);}}// Creates memento public Memento CreateMemento(){return (new Memento(_state));}// Restores original statepublic void SetMemento(Memento memento){Debug.Log("Restoring state...");State = memento.State;}
}
4.测试
public class MementoStructure : MonoBehaviour
{void Start ( ){Originator o = new Originator();o.State = "On";// Store internal stateCaretaker c = new Caretaker();c.Memento = o.CreateMemento();// Continue changing originatoro.State = "Off";// Restore saved stateo.SetMemento(c.Memento);}
}