3、em.Collections.Generic;using System.Linq;using System.Text;namespace MyMementoPattern{ //Memento模式适用于由原发器管理,却又必须存储在原发器之外的信息 //定义原发器对象:Originator //有必要对自身内部状态进行保存,然后在某个点处又需要恢复内部状态的对象 class Originator { #region State属性 private string _state; public str
4、ing State { get { return _state; } set { _state = value; Console.WriteLine("State={0}",_state); } } #endregion //在实现Memento模式中,要防止原发器Originator以外的对象访问备忘录对象,备忘录对象有两个接口,一个为原发器使用的宽接口,一个为其他
5、对象使用的窄接口 #region 创建Memento类的方法(Memento类将用于保存Originator对象的State状态值) public Memento CreateMemento() { Console.WriteLine("创建Memento对象并保存状态到此对象中.."); return (new Memento(_state)); //此处,在创建Memento对象时就保存了对象状态 } #endregion
6、 #region 利用上面Memento对象保存的状态值进行状态恢复操作 public void SetMemento(Memento memnto) { Console.WriteLine("恢复对象状态.."); State = memnto.State; } #endregion }} 2、备忘录对象Mementousing System;using System.Collections.Generic;using System.Linq;us
7、ing System.Text;namespace MyMementoPattern{ class Memento { //定义备忘录对象Memento类,它专门用于保存Originator类对象的状态信息 //也即:在不破坏封装性的前提下,捕获一个Originator的内部状态,并在这个对象之外保存这个状态。 //而这个状态值就保存在Memento类中 private string _state; public string State { g