<设计模式19>备忘录模式

备忘录(Memento)模式是是一种行为模式,常用来保存一种状态。当状态被修改的时候,可以通过备忘录模式来恢复状态,就好比打游戏一样,我们可以进行保存记录,保存后我们可以随时调取记录来恢复到以前的数据。

角色介绍:

Originator:源数据,里面是需要保存的数据值,在这里可以创建备忘录,备份和回复数据。

Memento:备忘录类,用于存储Originator的数据状态。

Caretaker:负责存放备忘录,但是不能对备忘录的内容进行修改,可以把备忘录传递给其他对象。


使用实例:

Originator:

/**
 * 源数据
 * @author xiaoqi
 *
 */
public class Originator {
	private int value;
	
	
	
	public int getValue() {
		return value;
	}



	public void setValue(int value) {
		this.value = value;
	}


	//创建备忘录
	public Memento createMemento(){
		return new Memento(value); 
	}
	
	
	//恢复数据
	public void restore(Memento memento){
		this.value = memento.getValue();
	}
}
Memento:

/**
 * 备忘录
 * @author xiaoqi
 *
 */
public class Memento {
	private int value;
	
	public Memento(int value){
		this.value = value;
	}
	
	public int getValue(){
		return value;
	}
}

Caretaker:

/**
 * 负责存储备忘录,但是不提供修改操作
 * @author xiaoqi
 *
 */
public class Caretaker {
	private Memento memento;
	
	public void save(Memento memento){
		this.memento = memento;
	}
	
	public Memento getMemento(){
		return memento;
	}
}
使用测试:

public class MementoTest {
	public static void main(String[] args) {
		Originator originator = new Originator();
		//设置数据
		int o = 11;
		System.out.println("备份的值:"+o);
		<span style="color:#ff0000;">originator.setValue(o);</span>
		Caretaker caretaker = new Caretaker();
		<span style="color:#ff0000;">caretaker.save(originator.createMemento());//创建caretaker对象保存备忘录</span>
		//修改数据
		originator.setValue(22222);
		System.out.println("修改的值:"+22222);
		//恢复数据
		<span style="color:#ff0000;">originator.restore(caretaker.getMemento());</span>
		int i = originator.getValue();
		System.out.println("恢复后的值:"+i);
	}
}

结果:

备份的值:11

修改的值:22222

恢复后的值:11


通过这种模式,很简单的达到了恢复保存的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值