java设计模式----备忘录模式

博客介绍了备忘录模式,其意义在于解决程序中的撤销操作,实现对象状态恢复,类似事务回滚。该模式主要有发起人、备忘录和管理角色三个对象,并分别阐述了各对象的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

备忘录模式存在的意义在于在程序里面我们可能会遇到撤销操作的问题,将对象恢复到某个状态。类似事务的回滚。

备忘录模式主要有三个对象

发起人(Originator):要备份的成员,它提供一个创建备忘录的方法,将自身的信息复制到备忘录中,并提供另一个方法将备忘录中信息覆盖自身信息。

备忘录(Memento):备忘录对象中包含存储发起人状态的成员变量,它提供set,get或构造方法保存发起人状态及获取发起人状态。

管理角色(Caretaker):用于管理备忘录对象的实现类。

发起人

 

package memento;

/**
 * @author mercy 
 * 发起人
 */
public class Originator {
	private String state;

	// 创建备忘录
	public Memento createMenmento() {
		return new Memento(state);

	}
	// 还原
	public void rollBack(Memento memento) {
		state = memento.getState();
	}
	public String getState() {
		return state;
	}
	public void setState(String state) {
		this.state = state;
		System.out.println("当前状态是:" + state);
	}

}

 备忘录

package memento;

/**
 * @author mercy
 *备忘录
 */
public class Memento {
	//状态
	private String state;

	public String getState() {
		return state;
	}
	
	public void setState(String state) {
		this.state = state;
	}
	//构造函数初始化状态
	public Memento(String state){
		this.state=state;
	}

}

 管理者

package memento;

/**
 * @author mercy
 *管理者,管理备忘录
 */
public class Caretaker {
	private Memento memento;

	public Memento getMemento() {
		return memento;
	}

	public void setMemento(Memento memento) {
		this.memento = memento;
	}
	

}

 测试

package memento;

public class Test {
	public static void main(String[] args) {
		//创建发起人对象
		Originator or=new Originator();
		//设置初始状态
		or.setState("On");
		//创建管理者对象
		Caretaker ct=new Caretaker();
		//设置备份
		ct.setMemento(or.createMenmento());
		//更改状态
		or.setState("Off");
		//恢复
		or.rollBack(ct.getMemento());
		System.out.println(or.getState());
	}

}

 结果

当前状态是:On
当前状态是:Off
On

 

转载于:https://www.cnblogs.com/JAYIT/p/5092347.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值