Java备忘录模式(Memento)

/**

  • 负责人类

  • 负责管理备忘录对象

  • @author 波波烤鸭

  • @email dengpbs@163.com

*/

public class CareTaker {

private EmpMemento memento;

//备忘点较多时,将备忘录压栈,将多个备忘录对象,序列化和持久化 实现撤回多步的操作

// private Stack stack = new Stack();

// private List list = new ArrayList();

public EmpMemento getMemento() {

return memento;

}

public void setMemento(EmpMemento memento) {

this.memento = memento;

}

}

源发起类

/**

  • 源发器类

  • @author 波波烤鸭

  • @email dengpbs@163.com

*/

public class Emp {

private String ename;

private int age;

private double salary;

//进行备忘操作,并返回备忘录对象

public EmpMemento memento(){

return new EmpMemento(this);

}

//进行数据恢复,恢复成制定备忘录对象的值

public void recovery(EmpMemento mmt){

this.ename = mmt.getEname();

this.age = mmt.getAge();

this.salary = mmt.getSalary();

}

public Emp(String ename, int age, double salary) {

super();

this.ename = ename;

this.age = age;

this.salary = salary;

}

public String getEname() {

return ename;

}

public void setEname(String ename) {

this.ename = ename;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public double getSalary() {

return salary;

}

public void setSalary(double salary) {

this.salary = salary;

}

}

备忘录类

/**

  • 备忘录类

  • @author 波波烤鸭

  • @email dengpbs@163.com

*/

public class EmpMemento {

private String ename;

private int age;

private double salary;

public EmpMemento(Emp e) {

this.ename = e.getEname();

this.age = e.getAge();

this.salary = e.getSalary();

}

public String getEname() {

return ename;

}

public void setEname(String ename) {

this.ename = ename;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public double getSalary() {

return salary;

}

public void setSalary(double salary) {

this.salary = salary;

}

}

测试类


public static void main(String[] args) {

CareTaker taker = new CareTaker();

Emp emp = new Emp(“bobo烤鸭”, 18, 880);

System.out.println(“第一次打印对象:”+emp.getEname()+“—”+emp.getAge()+“—”+emp.getSalary());

taker.setMemento(emp.memento()); //备忘一次

emp.setAge(28);

emp.setEname(“dpb”);

emp.setSalary(19000);

System.out.println(“第二次打印对象:”+emp.getEname()+“—”+emp.getAge()+“—”+emp.getSalary());

emp.recovery(taker.getMemento()); //恢复到备忘录对象保存的状态

System.out.println(“第三次打印对象:”+emp.getEname()+“—”+emp.getAge()+“—”+emp.getSalary());

}

输出

第一次打印对象:bobo烤鸭—18—880.0

第二次打印对象:dpb—28—19000.0

第三次打印对象:bobo烤鸭—18—880.0

撤回成功~~

开发中常见的应用场景:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值