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

时间: 2024-10-17 10:06:50

java23中设计模式之备忘录模式的相关文章

(21):(行为型模式) Memento 备忘录模式

(21):(行为型模式) Memento 备忘录模式,布布扣,bubuko.com

22行为型模式之备忘录模式

概念 Memento模式也叫备忘录模式,是行为模式之一,它的作用是保存对象的内部状态,并在需要的时候(undo/rollback)恢复对象以前的状态. 应用场景 如果一个对象需要保存状态并可通过undo或rollback等操作恢复到以前的状态时,可以使用Memento模式. 1)一个类需要保存它的对象的状态(相当于Originator角色) 2)设计一个类,该类只是用来保存上述对象的状态(相当于Memento角色) 3)需要的时候,Caretaker角色要求Originator返回一个Memen

【一起学设计模式】中介者模式+观察者模式+备忘录模式实战:(二)提交个订单我到底经历了什么鬼?

前言 再多的话就不说了,这个是接着上一讲: [一起学设计模式]状态模式+装饰器模式+简单工厂模式实战:(一)提交个订单我到底经历了什么鬼? 一起的,一些多余的赘述请先看这个篇文章. 业务场景 一图流,还是上一篇文章中一样的图,接下来我们就梳理下总结模式.观察者模式.备忘录模式的应用: 订单中心: 1.订单中心创建订单 2.订单状态流转(状态模式) 3.记录操作日志(装饰器模式+简单工厂模式) 4.订单中心通知 库存中心更新库存 调度中心: 1.库存中心更新本地库存(使用命令模式+模板方法模式+工

4 行为型模式之- 备忘录模式

备忘录模式介绍: 备忘录模式是一种行为模式,该模式用于保存对象当前的状态,并且在之后可以再次恢复到此状态,这有点像我们平时说的"后悔"药.备忘录模式实现的方式需要保证被保存的对象状态不能被对象从外界访问,目的是为了保护好被保存的这些对象状态的完整性以及内部实现不向外暴露 备忘录模式的定义: 在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样,以后就可以将对象恢复到原先的状态 对于备忘录模式来说,比较贴切的场景应该是游戏中的存档功能,该功能就是将游戏进度存储到

行为型模式之备忘录模式

概述 备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原,当前很多软件都提供了撤销(Undo)操作,其中就使用了备忘录模式. 定义 备忘录模式(Memento Pattern):在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态.它是一种对象行为型模式,其别名为Token. 实现 原发器 /// <summary> /// 象棋棋子

设计模式7(状态模式,备忘录模式)

状态模式 上下文对象通过改变状态来改变行为,看起来就像是改变了类型 分离状态,选择行为 状态模式 各种状态不能替换 上下文对象中维护的状态对象 分离状态,选择行为 策略模式 各种策略可以互相替换     观察者模式     行为是固定的,就是通知观察者,以达到触发联动的效果 单例模式 如有需要可以将状态设置为单例                     备忘录模式 在不破坏原发器封装的前提下,捕获其内部状态(备忘录),并在对象外部由"备忘录管理者"保存管理, 以便在操作后,恢复状态 保

设计模式---状态变化模式之备忘录模式(Memento)

一:概念 用于保存对象的内部状态,并在需要的时候(undo/rollback)回复对象以前的状态 二:应用场景 如果一个对象需要保存状态并可通过undo或rollback等操作恢复到以前的状态时,可以使用Memento模式. 1)一个类需要保存它的对象的状态(相当于Originator角色): 2)设计一个类,该类只是用来保存上述对象的状态(相当于Memento角色): 3)需要的时候,Caretaker角色要求Originator返回一个Memento并加以保存: 4)undo或rollbac

备忘录模式(Memento)

一.备忘录模式介绍 备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态. 例如: 1.office重新打开时的恢复功能. 2.事务的回滚操作 备忘录模式UML图: Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态. Originator可根据需要决定Memento存储Originator的哪些内部状态 Memento(备忘录):负责存储Origi

“备忘录模式”就这么简单

备忘录模式的官方定义: 在不破坏封装性的前提下,获取一个对象的内部状态,并在该对象之外保存这些状态.这样以后就可以通过该对象恢复到原先保存的状态. 大白话说: 一个对象中一般都封装了很多属性,这些属性的值会随着程序的运行而变化.当我们需要保存某一时刻对象的某些值的时候,我们就再创建一个对象,将当前对象中的一些属性保存到新的对象中,当我们需要恢复的时候再从新的对象中取出属性值即可.这种想法就是备忘录模式. 备忘录模式的类图: 1.需要备份的类是Orginator,备份的数据保存在Mementor中