Unity设计模式之备忘录模式

来源:互联网 发布:淘宝如何上宝贝 编辑:程序博客网 时间:2024/06/03 09:23

涉及角色:
1.Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。Originator可以根据需要决定Memento存储自己的哪些内部状态。
2.Memento(备忘录):负责存储Originator对象的内部状态,并可以防止Originator以外的其他对象访问备忘录。备忘录有两个接口:Caretaker只能看到备忘录的窄接口,他只能将备忘录传递给其他对象。Originator却可看到备忘录的宽接口,允许它访问返回到先前状态所需要的所有数据。
3.Caretaker(管理者):负责备忘录Memento,不能对Memento的内容进行访问或者操作。

public 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()        {            Debug.Log ("State="+state);        }    }
public class Memento    {        private string state;        public Memento (String state)        {            this.state = state;        }        public string State        {            get{return state;}        }    }
public class Caretaker    {        private Memento memento;        public Memento Memento        {            get{return memento;}            set{memento = value;}        }    }

最后是客户端代码

    public class Client:MonoBehaviour    {        void Start()        {            Originator o = new Originator ();            o.State = "On";            o.Show ();            Caretaker c = new Caretaker ();            c.Memento = o.CreateMemento ();            o.State = "Off";            o.Show ();            o.SetMemento (c.Memento);            o.Show ();        }    }
0 0