设计模式之备忘录模式

10/25/2012 10:22:07 AM

名称:备忘录模式

意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 

适用环境:

     1、必须保存一个对象的在某一个时记刻的(部分)状态,这样以后需要时它才能恢复到先前的状态。

     2、如果一个用接口来让其它对象直接得到这些状态,将会暴露对象的实现细节并存坏对象的封装性。

    classOriginator

    {

        privatestring_state;

        publicstringState

        {

            get{ return_state; }

            set

            {

                _state = value;

                Console.WriteLine("State = "+ _state);

            }

        }

        publicMementoCreateMemento()

        {

            return(newMemento(_state));

        }

        publicvoidSetMemento(Mementomemento)

        {

            Console.WriteLine("Restoring state...");

            State = memento.State;

        }

    }

    classMemento

    {

        privatestring_state;

        publicMemento(stringstate)

        {

            this._state = state;

        }

        publicstringState

        {

            get{ return_state; }

        }

    }

    classCaretaker

    {

        privateMemento_memento;

        publicMementoMemento

        {

            set{ _memento = value; }

            get{ return_memento; }

        }

}

调用:

            Originatoro = newOriginator();

            o.State = "On";

            Caretakerct = newCaretaker();

            ct.Memento = o.CreateMemento();

 

            o.State = "Off";

 

            o.SetMemento(ct.Memento);

 

输出:

State = On

State = Off

Restoring state...

State = On