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

建设工程质量检测网站刷赞网站推广永久

建设工程质量检测网站,刷赞网站推广永久,那些影视解析网站怎么做的,河北石家庄最新新闻备忘录设计模式(Memento Pattern) 在不破坏封闭的前提下,捕获一个对象的内部状态,保存对象的某个状态,以便在适当的时候恢复对象,又叫做快照模式,属于行为模式备忘录模式实现的方式需要保证被保…
  • 备忘录设计模式(Memento Pattern)

    • 在不破坏封闭的前提下,捕获一个对象的内部状态,保存对象的某个状态,以便在适当的时候恢复对象,又叫做快照模式,属于行为模式
    • 备忘录模式实现的方式需要保证被保存的对象状态不能被对象从外部访问
  • 应用场景

    • 玩游戏存档功能,下一次登录游戏时可以从上次退出的地方继续游戏
    • 棋盘类游戏的悔棋
    • 数据库事务回滚
    • 需要记录一个对象的内部状态时,为了允许用户取消不确定或者错误的操作,能够恢复到原先的状态
    • 提供一个可回滚的操作,如Ctrl+Z、浏览器回退按钮
  • 角色

    • Originator发起者:记录当前的内部状态,并负责创建和恢复备忘录数据,允许访问返回到先前状态所需的所有数据,可以根据需要决定Memento存储自己的哪些内部状态

    • Memento备忘录:负责存储Originator发起人对象的内部状态,在需要的时候提供发起人需要的内部状态

    • Caretaker管理者:对备忘录进行管理、保存和提供备忘录,只能将备忘录传递给其他角色

    • Originator和Memento属性类似

      在这里插入图片描述

  • 代码示例,以游戏存档、回退为例

    /*** 发起者*/
    class RoleOriginator {// 生命值private int hp = 100;// 攻击力private int attack = 10;public int getHp() {return hp;}public void setHp(int hp) {this.hp = hp;}public int getAttack() {return attack;}public void setAttack(int attack) {this.attack = attack;}public void display() {System.out.println("生命:" + hp + ",攻击力:" + attack);}public void fight() {// 攻击力上涨this.attack += 2;// 生命值下降this.hp -= 10;System.out.println("战斗了一次");}/*** 存档:保存快照** @return*/public RoleStateMemento saveState() {System.out.println("存档成功");return new RoleStateMemento(hp, attack);}/*** 恢复存档** @param memento*/public void recoveryState(RoleStateMemento memento) {this.hp = memento.getHp();this.attack = memento.getAttack();System.out.println("恢复存档成功");}
    }/*** 备忘录、快照*/
    class RoleStateMemento {// 生命值private int hp;// 攻击力private int attack;public RoleStateMemento(int hp, int attack) {this.hp = hp;this.attack = attack;}public int getHp() {return hp;}public void setHp(int hp) {this.hp = hp;}public int getAttack() {return attack;}public void setAttack(int attack) {this.attack = attack;}
    }/*** 状态管理者*/
    class RoleStateCaretaker {private RoleStateMemento memento;public RoleStateMemento getMemento() {return memento;}public void setMemento(RoleStateMemento memento) {this.memento = memento;}
    }public class Main {public static void main(String[] args) {RoleOriginator roleOriginator = new RoleOriginator();roleOriginator.display();roleOriginator.fight();roleOriginator.display();// 存档RoleStateCaretaker caretaker = new RoleStateCaretaker();caretaker.setMemento(roleOriginator.saveState());roleOriginator.fight();roleOriginator.fight();roleOriginator.fight();roleOriginator.display();// 恢复存档roleOriginator.recoveryState(caretaker.getMemento());roleOriginator.display();}
    }
    
  • 优点

    • 给用户提供了一种可以恢复状态的机制
    • 实现了信息的封装,使得用户不需要关心状态的保存细节
  • 缺点

    • 消耗更多的资源,而且每一次保存都会消耗一定的内存
http://www.dtcms.com/a/424593.html

相关文章:

  • 关于建设 医院网站的请示删除网站栏目
  • 如何用AI提升学习效率与创作能力
  • 在线视频网站怎么做seo北京定制网站建设公司
  • Spring IoC容器加载过程 vs Bean生命周期对应关系图
  • 榆林电商网站建设app设计与开发公司
  • 吴江建网站优荐苏州聚尚网络网站群建设方案.doc
  • 动态规划实战
  • 专门教做衣服的网站互联网保险产品
  • 专业网站开发设计常州做网站设计
  • 中兴建设有限公司网站网站开发要怎么学
  • 网站备案 申请wordpress缓存头像
  • Figma 前端相关使用
  • 电商网站建设哪家公司好高级网站建设费用
  • MySQL笔记---基本查询
  • 珠宝网站建设方案网站建设gzzhixun
  • 秦皇岛建设网站公司个人免费网站建设模板
  • 五指山住房建设局网站wordpress 新浪微博登入
  • 网站备案准备资料wordpress手机底部联系插件
  • 网站建设有几大板块做关键字要改网站
  • 上海有名的网站建设公司有哪些wordpress 要加上
  • 辽宁网站备案要多久电子简历模板
  • 国产32位MO+内核MCU主频24MhzPY32F002B开发板
  • 仿qq网站程序温州市住房和城乡建设厅网站首页
  • LLM模型kv cache的估计和应用
  • 铁岭市网站建设公司重庆森林经典台词图片
  • 【开题答辩全过程】以 PHP茶叶同城配送网站的设计与实现为例,包含答辩的问题和答案
  • 自建站服务专业建网站设计公司
  • 做网站需要哪一些内容益阳建站网站制作
  • 前端开发工具都有哪些?常用前端开发工具清单与场景化推荐
  • Apifox新版本重磅升级!AI用例生成+多模块优化!