设计模式(十八)----- 备忘录模式(Memento)----(JAVA版)

     我们平时写代码,会遇到中间有个变量要保存一下,等一会还要使用,我们可以使用一个变量把它暂时的保存起来,要使用的时候,再去使用;  当我们现在是一个对象的一个时刻的状态要暂时的保存起来,以便下次我再使用的时候呢,我们其实也是可以使用备忘录模式来把这个中间状态来保存,下次我再来使用这个状态,这其实本质也就是备份---名如其功能。

备忘录模式定义:

    在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。


适用性:

1.必须保存一个对象在某一时刻的状态,这样以后需要时它才能恢复到先前的状态

2.如果一个用户接口来让其它的对象直接得到这些状态,将会暴露对象的实现细节并且破坏对象的封装性


参与者:

1.Memento

   备忘录存储原发器对象的内部状态

2.Originator

   原发器创建一个备忘录,用以记录当前时刻的内部状态

3.Caretaker

   负责保存好备忘录,不能对备忘录的内部进行操作或检查


一个简单的样例:

Memento

   要保存的内容,也就是原发器对象的内部状态

public class Memento {
  private String state;
  public Memento(String state) {
    this.state = state;
  }
  public String getState() {
    return state;
  }
  public void setState(String state) {
     this.state = state; 
  }
}

Originator

   要保存内容的对象,对它进行相应的处理,主要是createMemento()和setMemento(Memento menemto)

public class Originator {
  private String state;
  public String getState(){
    return state;
  }
  public void setState(String state){ 
    this.state = state;
  }
  public Memento createMemento(){
    return new Memento(state);
  }
  public void setMemento(Memento menemto){
    state = memento.getState();
  }
  public void showState(){
     System.out.println(state);
  }
}

Caretaker

public class Caretaker{
  private Memento memento;
  public Memento getMemento(){
    return this.memento;
  }
  public void setMemento(Memento memento){
    this.memento = memento;
  }
}

Test:

public class Test{
  public static void main(String[] args){
    Originator org = new Originator();
    org.setState("开会中");

    Caretaker ctk = new Caretaker();
    ctk.setMemento(org.createMemento());//将数据封装在Caretaker

    org.setState("睡觉中");
    org.showState();

    org.setMemento(ctk.getMemento());//将数据重新导入
    org.showState();
}

result:

睡觉中

开会中


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值