备忘录模式—悔棋操作

编程入门 行业动态 更新时间:2024-10-28 07:26:36

<a href=https://www.elefans.com/category/jswz/34/1768538.html style=备忘录模式—悔棋操作"/>

备忘录模式—悔棋操作

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

通俗的讲就像课本举得例子:一般玩单机游戏都会有存档这个选项,这就可以利用备忘录模式来实现;一些撤销,悔棋操作,都是回到之前的状态。

下面来说一下象棋中的悔棋操作如何利用备忘录模式来实现。

package 象棋悔棋操作;public class GameRole {private String name;private int x;private int y;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getX() {return x;}public void setX(int x) {this.x = x;}public int getY() {return y;}public void setY(int y) {this.y = y;}public void StateDisplay() {System.out.println("这颗棋子的信息:"+this.name+"("+this.x+","+this.y+")");}public void GetInitState() {this.name="马";this.x=2;this.y=1;}public void Run1() {this.name="马";this.x=1;this.y=2;}public void Run2() {this.name="马";this.x=3;this.y=2;}public void Run3() {this.name="马";this.x=4;this.y=1;}public RoleStateMemento SaveState() {return (new RoleStateMemento(name,x,y));}public void RecoveryState(RoleStateMemento memento) {this.name=memento.getName();this.x=memento.getX();this.y=memento.getY();}}package 象棋悔棋操作;public class RoleStateMemento {private String name;private int x;private int y;public RoleStateMemento(String name, int x, int y) {super();this.name = name;this.x = x;this.y = y;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getX() {return x;}public void setX(int x) {this.x = x;}public int getY() {return y;}public void setY(int y) {this.y = y;}}package 象棋悔棋操作;public class RoleStateCaretaker {private RoleStateMemento memento;public RoleStateMemento getMemento() {return memento;}public void setMemento(RoleStateMemento memento) {this.memento = memento;}}package 象棋悔棋操作;public class Test {public static void main(String[] args) {System.out.println("开始时棋子的位置:");GameRole a1=new GameRole();a1.GetInitState();a1.StateDisplay();RoleStateCaretaker stateAdmin=new RoleStateCaretaker();stateAdmin.setMemento(a1.SaveState());System.out.println("移动后棋子的位置:");a1.Run1();a1.StateDisplay();System.out.println("悔棋后棋子的位置:");a1.RecoveryState(stateAdmin.getMemento());a1.StateDisplay();// TODO Auto-generated method stub}}

运行结果:

uml图:

 

更多推荐

备忘录模式—悔棋操作

本文发布于:2023-07-28 16:23:20,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1248827.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:备忘录   模式   操作

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!