您的位置:首页 > 编程语言 > Java开发

阅读笔记常见的设计模式之三:备忘录模式的简单理解

2017-09-21 10:25 344 查看
先看下下面程序:

public class LOL{
private int mMoney=0;
private String mHero="德玛";
private String mName="英雄联盟"

public void play(){
syso("进入游戏:"+mMonet+"厉害了");
mMoney++;
syso(" "+mHero+"厉害了");
}

public void quit(){
syso("---------------");
syso(mHero+"退出游戏");

}

//创建备忘录
public Memoto createMemoto(){
Memoto memoto=new Memoto();
m

}

}

//定义备忘录角色,存储内部状态
public class Memoto(){
public  int mMoney;
public  String mHero;
public  String mName;
@Override
public String toString(){
retorn " ("+mMoney+" "+mHero+" "+mName+")";

}

}

//定义备忘录的操作者
public class Caretaker{
//备忘录
Memoto mMemoto;

//获取存档
public Memoto getMemoto(){
return mMemoto;
}
//实现存档
public void archive(Memoto memoto){
this.mMemoto=memoto;
}

}

//客户端使用
public class Client{
public static void main(String[] args){
LOL lol=new LOL();
Caretaker caretaker=new Caretaker();
//实现存档
caretaker.achieve(lol.createMemoto());
lol.quit();
LOL lol=new LOL();
//恢复存档
lol.restore(caretaker.getMemoto());

}

}


我的理解是:

在使用备忘录模式的那个类A(对象)中创建一个方法,这个方法依托备忘录的类B提供的要保存的参数数据进行数据赋值,将类A需要保存的数据参数保存到类B中,然后在类A中提供一个restore方法,这个方法参数是类B的对象,然后需要一个备忘录的管理类C,这个类提供两个方法:得到备忘录对象和保存备忘录对象。当你需要在客户端实现备忘录操作的时候,首先new出A类,调用A类的createMemoto方法将参数赋值给类B,然后new出类C,调用C的archive方法进行备忘录对象的保存,当A类退出后再次构建游戏对象,调用A类对象的restore对象将caretaker.getMemoto对象传入即可。

有一句总结的很好:

备忘录模式是在不破坏封装的条件下,通过备忘录对象存储另一个对象内部状态的快照,在将来合适的时候把这个对象还原到存储起来的状态.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式 java