当前位置: 首页 > news >正文

花生壳做局域网站图书馆理论与建设网站

花生壳做局域网站,图书馆理论与建设网站,用html做网站顺序,莱芜新闻主持人名单备忘录模式 1#xff09;概述 1.定义 在不破坏封装的前提下#xff0c;捕获一个对象的内部状态#xff0c;并在该对象之外保存这个状态#xff0c;可以在以后将对象恢复到原先保存的状态。 2.作用 备忘录模式提供了一种状态恢复的实现机制#xff0c;使得用户可以方便…备忘录模式 1概述 1.定义 在不破坏封装的前提下捕获一个对象的内部状态并在该对象之外保存这个状态可以在以后将对象恢复到原先保存的状态。 2.作用 备忘录模式提供了一种状态恢复的实现机制使得用户可以方便地回到一个特定的历史步骤当新的状态无效或者存在问题时可以使用暂时存储起来的备忘录将状态复原。 3.结构图 4.角色 Originator原发器它是一个普通类可以创建一个备忘录并存储它的当前内部状态也可以使用备忘录来恢复其内部状态一般将需要保存内部状态的类设计为原发器。 Memento备忘录)存储原发器的内部状态根据原发器来决定保存哪些内部状态。 Caretaker负责人负责人又称为管理者它负责保存备忘录但是不能对备忘录的内容进行操作或检查在管理者类中可以存储一个或多个备忘录对象它只负责存储对象而不能修改对象也无须知道对象的实现细节。 5.代码实现 原发器类Originator public class Originator {private String state;public Originator(){}// 创建一个备忘录对象public Memento createMemento() {return new Memento(this);}// 根据备忘录对象恢复原发器状态public void restoreMemento(Memento m) {state m.state;}public void setState(String state) {this.statestate;}public String getState() {return this.state;} }备忘录类Memento //备忘录类默认可见性包内可见 class Memento {private String state;public Memento(Originator o) {state o.getState();}public void setState(String state) {this.statestate;}public String getState() {return this.state;} }6.Java语言实现备忘录模式 一般将Memento类与Originator类定义在同一个包(package)中实现封装在Java语言中可使用默认访问标识符来定义Memento类保证只有Originator类可以对Memento进行访问。 在Memento中保存了Originator的state值如果Originator中的state值改变之后需撤销可以通过调用它的restoreMemento()方法进行恢复。 对于负责人类Caretaker它用于保存备忘录对象并提供getMemento()方法向客户端返回一个备忘录对象原发器通过使用这个备忘录对象可以回到某个历史状态典型的负责人类的实现代码如下 public class Caretaker {private Memento memento;public Memento getMemento() {return memento;}public void setMemento(Memento memento) {this.mementomemento;} }在Caretaker类中不应该直接调用Memento中的状态改变方法它的作用仅仅用于存储备忘录对象。 7.注意 设计备忘录类时需要考虑其封装性除了Originator类不允许其他类来调用备忘录类Memento的构造函数与相关方法如果不考虑封装性允许其他类调用setState()等方法将导致在备忘录中保存的历史状态发生改变通过撤销操作所恢复的状态就不再是真实的历史状态备忘录模式也就失去了本身的意义。 2完整解决方案 1.结构图 Chessman充当原发器ChessmanMemento充当备忘录MementoCaretaker充当负责人在MementoCaretaker中定义了一个ChessmanMemento类型的对象用于存储备忘录。 2.代码实现 //象棋棋子类原发器 Data public class Chessman {private String label;private int x;private int y;public Chessman(String label,int x,int y) {this.label label;this.x x;this.y y;}//保存状态public ChessmanMemento save() {return new ChessmanMemento(this.label,this.x,this.y);}//恢复状态public void restore(ChessmanMemento memento) {this.label memento.getLabel();this.x memento.getX();this.y memento.getY();} }//象棋棋子备忘录类备忘录 Data class ChessmanMemento {private String label;private int x;private int y;public ChessmanMemento(String label,int x,int y) {this.label label;this.x x;this.y y;} }//象棋棋子备忘录管理类负责人 public class MementoCaretaker {private ChessmanMemento memento;public ChessmanMemento getMemento() {return memento;}public void setMemento(ChessmanMemento memento) {this.memento memento;} }客户端类 public class Client {public static void main(String[] args) {MementoCaretaker mc new MementoCaretaker();Chessman chess new Chessman(车,1,1);display(chess);mc.setMemento(chess.save()); //保存状态 chess.setY(4);display(chess);mc.setMemento(chess.save()); //保存状态display(chess);chess.setX(5);display(chess);System.out.println(******悔棋******); //恢复状态chess.restore(mc.getMemento()); display(chess);}public static void display(Chessman chess) {System.out.println(棋子 chess.getLabel() 当前位置为 第 chess.getX() 行 第 chess.getY() 列。);} }
http://www.dnsts.com.cn/news/167812.html

相关文章:

  • 企业网站建设常见问题wordpress code snippets
  • 网站正在建设中怎么办苏州设计公司北京vi设计公司
  • 做网站包含微信公众号吗线下编程课程收费标准
  • 张家港网站开发制作专利减缓在哪个网站上做
  • 中山企业网站查看网页源代码
  • 深圳做网站网络公司怎么样微信公众平台高级开发
  • 鄂尔多斯公司网站建设网站备案的幕布是什么
  • 一台vps主机可以建设多少个网站网站运营需要哪些技术
  • 芗城区建设局网站网站备案如何查询
  • 物流网站怎么做湖北宜昌推广
  • 网站建设评选打分网站建设职位要求
  • 炫酷一些的网站网站策划书基本项目
  • 黄山网站建设免费咨询制作网页的流程
  • 视觉设计网站推荐wordpress一键采集文章
  • 高端网站定制开发在线画图网页版
  • 有什么做节能报告的网站个人可以建购物网站吗
  • 机关门户网站app建设思考国外外贸网站大全
  • 做网站或者app广丰网站建设
  • 做网站多大上行速度怎样增加网站反向链接
  • 邢台建网站哪里有多语言外贸网站设计
  • 网站上线注意问题公众号里的电影网站怎么做的
  • 网站做支付需要准备什么东西网页设计师的要求
  • 长沙网站seo优化赣州网站设计哪家强
  • 二手交易网站开发可参考文献自己做坑人网站的软件
  • 网站建设与管理可以专升本吗网架提升公司
  • 保定网站设计优势哪些外贸网站可以做soho
  • 大连网站设计九首选仟亿科技北京人才招聘网站
  • 免费 网站 如何做佛山市官网网站建设公司
  • 网站建设的价值是什么意思wordpress文章付费可看
  • 去哪里做网站安全等级保护级别南山网站建设哪家效益快