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

西平县住房城乡建设局网站wordpress免费插件下载地址

西平县住房城乡建设局网站,wordpress免费插件下载地址,wordpress首页显示摘要的插件,电脑接单做任务平台目录 一. 前言 二. 实现 三. 优缺点 一. 前言 备忘录模式又称快照模式,是一种行为型设计模式。它可以在不破坏封装性的前提下捕获一个对象的内部状态,并在对象之外保存这个状态,以便在需要的时候恢复到原先保存的状态。在不违反封装的情况…

目录

一. 前言

二. 实现

三. 优缺点


一. 前言

    备忘录模式又称快照模式,是一种行为型设计模式。它可以在不破坏封装性的前提下捕获一个对象的内部状态,并在对象之外保存这个状态,以便在需要的时候恢复到原先保存的状态。在不违反封装的情况下获得对象的内部状态,从而在需要时可以将对象恢复到最初状态。

二. 实现

Originator:原始对象。
Caretaker:负责保存好备忘录。
Menento:备忘录,存储原始对象的的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口,它只能将备忘录传递给其它对象;一个是提供给 Originator 的宽接口,允许它访问到先前状态所需的所有数据。理想情况是只允许 Originator 访问本备忘录的内部状态。

案例:以下实现了一个简单计算器程序,可以输入两个值,然后计算这两个值的和。备忘录模式允许将这两个值存储起来,然后在某个时刻用存储的状态进行恢复。

/*** Originator Interface*/
public interface Calculator {// Create MementoPreviousCalculationToCareTaker backupLastCalculation();// setMementovoid restorePreviousCalculation(PreviousCalculationToCareTaker memento);int getCalculationResult();void setFirstNumber(int firstNumber);void setSecondNumber(int secondNumber);
}
/*** Originator Implementation*/
public class CalculatorImp implements Calculator {private int firstNumber;private int secondNumber;@Overridepublic PreviousCalculationToCareTaker backupLastCalculation() {// create a memento object used for restoring two numbersreturn new PreviousCalculationImp(firstNumber, secondNumber);}@Overridepublic void restorePreviousCalculation(PreviousCalculationToCareTaker memento) {this.firstNumber = ((PreviousCalculationToOriginator) memento).getFirstNumber();this.secondNumber = ((PreviousCalculationToOriginator) memento).getSecondNumber();}@Overridepublic int getCalculationResult() {// result is adding two numbersreturn firstNumber + secondNumber;}@Overridepublic void setFirstNumber(int firstNumber) {this.firstNumber = firstNumber;}@Overridepublic void setSecondNumber(int secondNumber) {this.secondNumber = secondNumber;}
}
/*** Memento Interface to Originator** This interface allows the originator to restore its state*/
public interface PreviousCalculationToOriginator {int getFirstNumber();int getSecondNumber();
}/***  Memento interface to CalculatorOperator (Caretaker)*/
public interface PreviousCalculationToCareTaker {// no operations permitted for the caretaker
}
/*** Memento Object Implementation* <p>* Note that this object implements both interfaces to Originator and CareTaker*/
public class PreviousCalculationImp implements PreviousCalculationToCareTaker,PreviousCalculationToOriginator {private int firstNumber;private int secondNumber;public PreviousCalculationImp(int firstNumber, int secondNumber) {this.firstNumber = firstNumber;this.secondNumber = secondNumber;}@Overridepublic int getFirstNumber() {return firstNumber;}@Overridepublic int getSecondNumber() {return secondNumber;}
}
/*** CareTaker object*/
public class Client {public static void main(String[] args) {// program startsCalculator calculator = new CalculatorImp();// assume user enters two numberscalculator.setFirstNumber(10);calculator.setSecondNumber(100);// find resultSystem.out.println(calculator.getCalculationResult());// Store result of this calculation in case of errorPreviousCalculationToCareTaker memento = calculator.backupLastCalculation();// user enters a numbercalculator.setFirstNumber(17);// user enters a wrong second number and calculates resultcalculator.setSecondNumber(-290);// calculate resultSystem.out.println(calculator.getCalculationResult());// user hits CTRL + Z to undo last operation and see last resultcalculator.restorePreviousCalculation(memento);// result restoredSystem.out.println(calculator.getCalculationResult());}
}
110
-273
110

三. 优缺点

优点:
1. 状态保存与恢复:备忘录模式可以帮助我们保存对象的状态,并在需要时恢复到之前的状态。这在某些情况下非常有用,比如撤销操作或者程序崩溃后的恢复。
2. 封装性和隔离性:可以确保对象的状态保存在备忘录对象中,而不会暴露给其他对象。这为对象的封装性和隔离性提供了保护,使得对象的状态变化对其他对象是透明的。
缺点:
1. 内存占用:可能引起较大的内存占用,特别是当对象的状态较多且状态改变频繁时。每个备忘录对象都需要保存一份完整的状态,如果状态较多或者备忘录对象较多,可能会消耗大量内存。
2. 性能开销:备忘录模式涉及到创建、存储和恢复状态的操作,这些操作可能引起一定的性能开销。特别是在状态较大或者对象较复杂的情况下,备忘录模式的性能可能会受到影响。

JDK中的备忘录模式
java.io.Serializable

http://www.yayakq.cn/news/594346/

相关文章:

  • 湖北省建设人力资源网站专题网站模板
  • 网站开发与建设课程凡客建网站
  • 北京建设信息咨询中心网站郑州网站app开发
  • 绍兴网站关键词优化中搜seo
  • 赣州市建设考勤网站东莞做网站一年费用
  • 吴江公司网站建设电话工业设计研究生院校排名
  • 给别人做网站需要增值电信工程公司名字大全
  • 网站制作注意事项珠海专业网站制作平台
  • 企业建站费用情况长沙网站建设网站推广微信营销
  • 想开个网站怎样开wordpress找回密码邮件
  • 网站策划书的主题有哪些东莞阳光网英语口语大赛官网
  • 航天基地规划建设局网站微信官方网站是多少钱
  • 简述电子商务网站的内容设计与开发住房和城乡建设部干部学院网站
  • 淘宝客怎么自己做网站及APP怎么分析一个网站seo
  • php 网站开发 pdf网站建设教程视频教程
  • 豪车网站建设背景深圳市手机网站建设报价
  • js网站页面效果上海网络推广公司兴怡
  • 建设电脑网站js 网站跳转
  • seo网站托管图片网站 建站
  • 不知此网站枉做男人自己做的网站如何让别人看到
  • 淘宝网站如何做虚拟机茶叶公司网站的建设
  • 石家庄网站制作设计天元建设集团有限公司欠薪问题
  • 一起做网店类似网站个人怎么做跨境电商
  • 专业做室内设计的网站有哪些网站开发容易学
  • 企业官方网站地址怎么填seo网站推广可以自己搞吗
  • 罗湖高端网站建设费用WordPress页面固定链接
  • 百科网站程序网站备案怎么办
  • 怎么创建属于自己的网站lnmp命令安装wordpress
  • 怎么上传自己的网站中国信用网企业查询官网
  • 运河经济开发区建设局网站做网站难