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

来源:互联网 发布:历城二中 知乎 编辑:程序博客网 时间:2024/05/16 16:06

定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象

恢复到原先保存的状态

很好理解,就像我们以前打通关游戏一样,打通某个关卡,就会备份一下,不然根本通不了关。。

package 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;      }  }  
package memento;//发起人:记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。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(this.state);  //返回当前状态的封装对象    }      public void recover(Memento memento){          this.setState(memento.getState());      }      public void showState() {    System.out.println("当前状态为:"+state);    }}
package memento;//管理角色:对备忘录进行管理,保存和提供备忘录。public class Caretaker {      private Memento memento;      public Memento getMemento(){          return memento;      }      public void setMemento(Memento memento){          this.memento = memento;      }  }  
package memento;public class Client {public static void main(String[] args) {// TODO Auto-generated method stubOriginator originator=new Originator();originator.setState("初始状态");originator.showState();Caretaker caretaker=new Caretaker();caretaker.setMemento(originator.createMemento());//备份状态originator.setState("另一个状态");originator.showState();originator.recover(caretaker.getMemento());originator.showState();}}

1 0
原创粉丝点击