设计模式学习之备忘录模式

备忘录模式很简单,一句话,就是可以保存信息,在必要的时候对象可以回到之前的状态。

code:配合注释可以看明白(大神叫这种实现为白箱实现)

class Memento {// 这个就是备忘录,存储信息用的,相当于一个小本本
	private String state;

	public Memento() {
	}

	public String getState() {
		return state;
	}

	public void setState(String state) {
		this.state = state;
	}
}

class Person {// 人的信息
	private String state=null;// 当前状态
	private Memento memento=null;// 当前备忘录中的信息

	private Memento createMemento() {
		Memento m = new Memento();// 创建备忘录
		m.setState(state);// 获取人当前的状态
		return m;
	}

	public void restoreMemento() {
		if (memento == null) {
			System.err.println("您的备忘录为空");
			return;
		}
		this.state = memento.getState();// 把人的状态置换为备忘录的状态
	}

	public String getState() {// 返回当前状态
		return state;
	}

	public void setState(String state) {// 设置状态
		if (this.state == null) {
			this.state = state;
		} else {	
			memento = this.createMemento();
			this.state = state;
		}

	}
	public Memento getMemento() {// 获取备忘录信息
		return memento;
	}
}

public class Test {
	public static void main(String[] args) {
		Person p = new Person();
		p.setState("on");
		p.restoreMemento();
		System.err.println(p.getState());
		p.setState("off");
		System.err.println(p.getState());
		p.restoreMemento();
		System.err.println(p.getState());
		p.setState("doing");
		System.err.println(p.getState());
		p.restoreMemento();
		System.err.println(p.getState());
	}
}

打印信息:

您的备忘录为空
on
off
on
doing

on

专业人士是这样写的(大神叫这种实现是黑箱实现)。代码如下:

code:

不想写了,差不了太多,备忘录还有各种变种,比如自述历史模式,自己想了解的,可以百度哟。

下一篇走起。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值