备忘录模式(Memento Pattern)
来源:互联网 发布:网络认证发票登录密码 编辑:程序博客网 时间:2024/05/14 00:05
备忘录模式:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
本例所在情景:
打游戏时已经达到了经验值、战斗值、生命值等各项最高,此时做一个备忘录(RoleState)保存这个时候的状态,如果战斗(Fight())之后各项值降低了,则通过备忘录将其恢复
Role类
package src2;public class Role { private int shengmingzhi; private int zhandouzhi; private int jingyanzhi; public Role(int shengmingzhi, int zhandouzhi, int jingyanzhi) { super(); this.shengmingzhi = shengmingzhi; this.zhandouzhi = zhandouzhi; this.jingyanzhi = jingyanzhi; } public RoleState SaveRole(){ return (new RoleState(this.shengmingzhi,this.zhandouzhi,this.jingyanzhi)); } public void RecoverState(RoleState rolestate){ this.shengmingzhi = rolestate.getZ1(); this.zhandouzhi = rolestate.getZ2(); this.jingyanzhi = rolestate.getZ3(); } public void Fight(){ this.shengmingzhi = shengmingzhi - 1; this.zhandouzhi = zhandouzhi - 1; this.jingyanzhi = jingyanzhi - 1; } public void Show(){ System.out.println(this.shengmingzhi); System.out.println(this.zhandouzhi); System.out.println(this.jingyanzhi); }}
RoleState类
package src2;public class RoleState { private int Z1; private int Z2; private int Z3; public RoleState(int a,int b,int c){ this.Z1 = a; this.Z2 = b; this.Z3 = c; } public int getZ1() { return Z1; } public void setZ1(int z1) { Z1 = z1; } public int getZ2() { return Z2; } public void setZ2(int z2) { Z2 = z2; } public int getZ3() { return Z3; } public void setZ3(int z3) { Z3 = z3; }}
RoleStateManager类
package src2;public class RoleStateManager { private RoleState statesave; public RoleState getStatesave() { return statesave; } public void setStatesave(RoleState statesave) { this.statesave = statesave; }}
客户端代码
package src2;public class t1 { public static void main(String[] args) { Role r1 = new Role(99, 99, 99); RoleStateManager RSM = new RoleStateManager(); RSM.setStatesave(r1.SaveRole()); r1.Fight(); System.out.println("恢复前的各项值:"); r1.Show(); r1.RecoverState(RSM.getStatesave()); System.out.println("恢复后的各项值:"); r1.Show(); }}
结果如下:
0 0
- Memento Pattern(备忘录模式)
- 备忘录模式(Memento Pattern)
- 备忘录模式(Memento Pattern)
- 备忘录模式(Memento Pattern)
- 备忘录模式(Memento Pattern)
- 备忘录模式(Memento Pattern)
- 备忘录模式(Memento Pattern)
- 备忘录模式(Memento Pattern)
- 备忘录模式 Memento Pattern
- 备忘录模式(Memento Pattern)
- 备忘录模式(Memento Pattern)
- 备忘录模式(Memento Pattern)
- 备忘录模式-Memento Pattern
- 备忘录模式-Memento Pattern
- 备忘录模式 | Memento Pattern
- Java Memento Pattern(备忘录模式)
- .NET设计模式(19):备忘录模式(Memento Pattern)
- 设计模式笔记22:备忘录模式(Memento Pattern)
- POJ-1273 Drainage Ditches(最大流)
- Android 对话框弹出底部背景透明度调节
- java xml解析
- Scintilla笔记(3)
- request.getRequestURI()、getRequestURL()、getContextPath()、getServletPath()区别
- 备忘录模式(Memento Pattern)
- ubuntu 终端命令
- POJ1502(暴力floyd)
- Scintilla笔记(4)
- 前台通过JS请求后台的几种方法
- 通过串口给ESP8266发送AT指令连接wifi的注意事项
- Hadoop-2.6.0分布式单机环境搭建HDFS讲解Mapreduce示例
- 卷积神经网络细节(激励函数,池化,预处理等)
- 20. Valid Parentheses (括号匹配)