Java的设计模式-----备忘录模式
2017-06-06 12:45
513 查看
备忘录模式(Memonto Pattern)
在不被破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。
优点:实现新的封装和提供了状态恢复的实现机制
缺点:资源消耗过大
模式结构:
1.Originator(原发器)
保存内部状态的类称为原发器。原发器可以创建一个备忘录,并存储它的当前状态,也可以使用备忘录来恢复其内部状态。
2.Memonto(备忘录)
备忘录对象不能直接被其他类使用,根据原发器来决定保存哪些内部状态。如果你想学习Java可以来这个群,首先是二二零,中间是一四二,最后是九零六,里面有大量的学习资料可以下载。
3.Caretaker(负责人)
负责人又称管理者,它负责保存备忘录,但不能对备忘录的内容进行检查或者操作。它可以保存一个或者多个备忘录对象。
例子恢复用户信息
原发器UserInfoOriginator
2.备忘录
3.负责人
4.测试类(初始状态--->修改状态--->恢复状态)
运行结果
在不被破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。
优点:实现新的封装和提供了状态恢复的实现机制
缺点:资源消耗过大
模式结构:
1.Originator(原发器)
保存内部状态的类称为原发器。原发器可以创建一个备忘录,并存储它的当前状态,也可以使用备忘录来恢复其内部状态。
2.Memonto(备忘录)
备忘录对象不能直接被其他类使用,根据原发器来决定保存哪些内部状态。如果你想学习Java可以来这个群,首先是二二零,中间是一四二,最后是九零六,里面有大量的学习资料可以下载。
3.Caretaker(负责人)
负责人又称管理者,它负责保存备忘录,但不能对备忘录的内容进行检查或者操作。它可以保存一个或者多个备忘录对象。
例子恢复用户信息
原发器UserInfoOriginator
包memento_22_1; / ** *用户信息类(原发器) * / public class UserInfoOriginator { //用户名 private String username; //密码 private String password; //电话号码 private String phoneNumber; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } / ** *保存备忘录 * @return返回一个新的备忘录对象 * / public Memento saveMemento() { return new Memento(username,password,phoneNumber); } / ** *恢复备忘录对象 * @param memento * / public void restoreMemento(Memento memento) { this.username = memento.getUsername(); this.password = memento.getPassword(); this.phoneNumber = memento.getPhoneNumber(); } / ** *显示用户信息 * / public void show() { System.out.println(“username:”+ username); System.out.println(“password:”+ password); System.out.println(“phoneNumber:”+ phoneNumber); } }
2.备忘录
包memento_22_1; / ** *备忘录 * / public class Memento { //用户名 private String username; //密码 private String password; //电话号码 private String phoneNumber; public Memento() { } public Memento(String username,String password,String phoneNumber) { this.username = username; this.password = password; this.phoneNumber = phoneNumber; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } }
3.负责人
包memento_22_1; / ** *负责人 * / public class Caretaker { private Memento memento; public Memento getMemento() { return memento; } public void setMemento(Memento mement a95a o) { this.memento = memento; } }
4.测试类(初始状态--->修改状态--->恢复状态)
包memento_22_1; / ** *测试类 * / public class Test { public static void main(String [] args) { //创建原发器 UserInfoOriginator originator = new UserInfoOriginator(); //创建负责人 Caretaker taker = new Caretaker(); originator.setUsername( “张三”); originator.setPassword( “123456”); originator.setPhoneNumber( “13800138000”); show(发起人,“初始状态”); //保存状态 taker.setMemento(originator.saveMemento()); //修改密码和电话号码 originator.setPassword( “654321”); originator.setPhoneNumber( “1323270755x”); show(originator,“修改状态”); //恢复状态一 originator.restoreMemento(taker.getMemento()); show(发起者,“恢复到初始状态”); } private static void show(UserInfoOriginator originator,String status) { System.out.println(status +“:”); originator.show(); 的System.out.println( “-----------------------”); } }
运行结果
相关文章推荐
- 深入浅出Java设计模式之备忘录模式
- java设计模式---备忘录模式
- JAVA 设计模式 备忘录模式
- Java设计模式之备忘录模式
- Java设计模式之备忘录模式
- Java设计模式-----Memento备忘录模式
- java设计模式_备忘录模式
- Java设计模式之从[暗黑破坏神存档点]分析备忘录(Memento)模式
- Java设计模式菜鸟系列(十九)备忘录模式建模与实现
- JAVA设计模式之备忘录模式
- java设计模式之备忘录模式
- java设计模式(行为型)之备忘录模式
- java设计模式---备忘录模式
- java设计模式-备忘录模式
- Java设计模式-----Memento备忘录模式
- java设计模式---备忘录模式
- JAVA设计模式-备忘录模式-Memento-游戏备份存档
- Java设计模式:备忘录模式
- Java设计模式之备忘录模式
- java-设计模式(行为型)-【备忘录模式】