java23中设计模式之备忘录模式

package com.bdqn.memento;
/**
 * 源发器类
 * @author OU
 *
 */
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() {
}
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;
}

@Override
public String toString() {
    return "Emp [ename=" + ename + ", age=" + age + ", salary=" + salary + "]";
}
}
emp
package com.bdqn.memento;

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;
    }
      
      
      
      
      
      
      
}
empmemento
package com.bdqn.memento;

import java.util.ArrayList;
import java.util.List;

/**
 * 负责人  类
 * 
 * 负责管理备忘录对象
 * 
 * @author OU
 *
 */
public class CareTaker {
   private EmpMemento empMemento;
  
  //可以保存很多备份的点 private List<EmpMemento> list=new ArrayList<EmpMemento>();
   
   
public EmpMemento getEmpMemento() {
    return empMemento;
}

public void setEmpMemento(EmpMemento empMemento) {
    this.empMemento = empMemento;
}
   
}
caretaker
package com.bdqn.memento;

public class Client {
public static void main(String[] args) {
      CareTaker taker=new CareTaker();
      Emp emp=new Emp("周无极",18,900);
      System.out.println("第一次打印对象"+emp);
      taker.setEmpMemento(emp.memento());//备份一次
      emp.setAge(38);
      emp.setEname("小欧");
      emp.setSalary(1000);
      System.out.println("第二次打印对象"+emp);
      emp.recovery(taker.getEmpMemento());
      System.out.println("第三次打印对象"+emp);
} 
}
client
原文地址:https://www.cnblogs.com/ou-pc/p/7523602.html