1、描述:

  备忘录就好像一个记事本,记录一件事情的所有属性,比如,一个贩卖青菜的农民,进货以后,都要把原价记录在一个记事本上,等菜卖完了,再把记事本上价格和卖之后的价格进行比较,算出利润,但是今天说的备忘录模式,备忘录同样具有记事本的功能,不过,我们记录下来的信息,是为了下次需要的时候,把需要的属性和状态进行还原回来,我们在玩单机游戏,每一次的存档都是一个很好的备忘录模式。

2、定义:

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

3、UML类图:

 

4、角色分析:

  • 发起者:使用备忘录类,记录备忘录信息。
  • 备忘录:记录某些信息的类。
  • 管理者:存储备忘录信息的管理类。

5、例子:

 发起者类:

Class Originator

{

  private string state;

  public string State

  {  

    get{return state;}

    set(state=value;}

  }

  public Memento CreateMemento()//创建备忘录

  {

    return new Memento(this.state);

  }

  public void SetMemento(Memento memento)

  {

    state =memento.state;//恢复备忘录

  }

  public void Show()

  {

    //显示状态

  }

}

备忘录类:

Class Memento

{

  public string State{get;set;}

  public Memento(string state)

  {

    this.State=state;

  }

}

管理者类:

class Caretaker

{

  public Memento Memento{get;set;}//也可以是一个备忘录集合,用来存储多个备忘录

}

客户端:

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();

posted on 2013-08-01 15:55  Kelly_HanShuai  阅读(92)  评论(0)    收藏  举报