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

平凉市住房和城乡建设厅网站顺德搜索seo网络推广

平凉市住房和城乡建设厅网站,顺德搜索seo网络推广,手机微信网站怎么做的,制作网站 公司简介1 备忘录模式介绍 备忘录模式(memento pattern)定义: 在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态. 2 备忘录模式原理 3 备忘录模式实现 /*** 发起人角色**/ public class Originator {private Strin…
1 备忘录模式介绍在这里插入图片描述

备忘录模式(memento pattern)定义: 在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态.

2 备忘录模式原理

在这里插入图片描述
在这里插入图片描述

3 备忘录模式实现

在这里插入图片描述

/*** 发起人角色**/
public class Originator {private String state = "原始对象";private String id;private String name;private String phone;public Originator() {}//创建备忘录对象public Memento createMemento(){return new Memento(id,name,phone);}//恢复对象public void restoreMemento(Memento m){this.state = m.getState();this.id = m.getId();this.name = m.getName();this.phone = m.getPhone();}@Overridepublic String toString() {return "Originator{" +"state='" + state + '\'' +", id='" + id + '\'' +", name='" + name + '\'' +", phone='" + phone + '\'' +'}';}public String getState() {return state;}public void setState(String state) {this.state = state;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}
}
/*** 备忘录角色* 访问权限为: 默认,在同包下可见(尽量保证只有发起者类可以访问备忘录类)**/
class Memento {private String state = "从备份对象恢复原始对象";private String id;private String name;private String phone;public Memento() {}public Memento(String id, String name, String phone) {this.id = id;this.name = name;this.phone = phone;}public String getState() {return state;}public void setState(String state) {this.state = state;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}@Overridepublic String toString() {return "Memento{" +"state='" + state + '\'' +", id='" + id + '\'' +", name='" + name + '\'' +", phone='" + phone + '\'' +'}';}
}
/*** 负责人类-获取和保存备忘录对象**/
public class Caretaker {private Memento memento;public Memento getMemento() {return memento;}public void setMemento(Memento memento) {this.memento = memento;}
}
public class Client {public static void main(String[] args) {//创建发起人对象Originator o1 = new Originator();o1.setId("1");o1.setName("spike");o1.setPhone("13522777722");System.out.println("========"+o1);//创建负责人对象Caretaker caretaker = new Caretaker();caretaker.setMemento(o1.createMemento());//修改o1.setName("update");System.out.println("========" + o1);//从负责人对象中获取备忘录对象,实现恢复操作o1.restoreMemento(caretaker.getMemento());System.out.println("========" + o1);}
}
4 备忘录模式应用实例

在这里插入图片描述

/*** 备份玩家的状态**/
class Memento {private int money;  //玩家获取的金币ArrayList fruits;  //玩家获取的水果public Memento(int money) {this.money = money;this.fruits = new ArrayList();}//获取当前玩家的金币public int getMoney(){return money;}//获取当前玩家的水果List getFruits(){return (List) fruits.clone();}//添加水果void addFruit(String fruit){fruits.add(fruit);}}

Player玩家类,只要玩家的金币还够,就会一直进行游戏,在该类中会设置一个createMemento方法,其作用是保存当前玩家状态.还会包含一个restore撤销方法,相当于复活操作.

/*** 玩家类**/
public class Player {private int money;  //金币private List<String> fruits = new ArrayList<>();  //玩家获得的水果private static String[] fruitsName ={   //表示水果种类的数组"苹果","葡萄","香蕉","橘子"};Random random = new Random();public Player(int money) {this.money = money;}//获取当前所有金币public int getMoney(){return money;}//获取一个水果public String getFruit(){String prefix = "";if(random.nextBoolean()){prefix = "好吃的";}//从数组中拿一个水果String f = fruitsName[random.nextInt(fruitsName.length)];return prefix + f;}//掷骰子方法public void yacht(){int dice = random.nextInt(6) + 1; //掷骰子if(dice == 1){money += 100;System.out.println("所持有的金币增加了...");}else if(dice == 2){money /= 2;System.out.println("所持有的金币减少一半");}else if(dice == 6){ //获取水果String fruit = getFruit();System.out.println("获取了水果: " + fruit);fruits.add(fruit);}else{//其他结果System.out.println("无效数字,继续投掷!");}}//拍摄快照public Memento createMemento(){Memento memento = new Memento(money);for (String fruit : fruits) {//判断: 只保存 '好吃的'水果if(fruit.startsWith("好吃的")){memento.addFruit(fruit);}}return memento;}//撤销方法public void restoreMemento(Memento memento){this.money = memento.getMoney();this.fruits = memento.getFruits();}@Overridepublic String toString() {return "Player{" +"money=" + money +", fruits=" + fruits +'}';}
}

测试: 由于引入了备忘录模式,可以保存某个时间点的玩家状态,这样就可以对玩家进行复活操作.

public class MainApp {public static void main(String[] args) throws InterruptedException {//创建玩家类,设置初始金币Player player = new Player(100);//创建备忘录对象Memento memento = player.createMemento();for (int i = 0; i < 100; i++) {//显示扔骰子的次数System.out.println("第" + i+"次投掷!");//显示当前玩家状态System.out.println("当前状态: " + player);//开启游戏player.yacht();System.out.println("玩家所持有的金币: " + player.getMoney() + " 元");//复活操作if(player.getMoney() > memento.getMoney()){System.out.println("赚到金币,保存当前状态,继续游戏!");memento = player.createMemento();  //更新快照}else if(player.getMoney() < memento.getMoney() / 2){System.out.println("所持金币不多,将游戏恢复到初始状态!");player.restoreMemento(memento);}Thread.sleep(1000);}}
}
5 备忘录模式总结

在这里插入图片描述

http://www.mmbaike.com/news/91717.html

相关文章:

  • 做网站策划如何搜索关键词热度
  • 多语言社交网站开发建网站一般多少钱
  • 门户网站开发平台网络营销模式有哪些类型
  • 免费的小程序制作工具成都seo优化公司
  • 网站推广码怎么做app下载量推广
  • 建设政府官方网站的要求百度竞价关键词怎么优化
  • MAKA网站做H5怎么压缩图片实时热搜榜榜单
  • 怎么用linux做网站服务器吗sem是什么基团
  • 中国建设教育协会官方网站查谷歌浏览器下载视频
  • wordpress免登录发布接口成都seo培训
  • 做日租都有哪些网站网络营销专业学什么
  • 义务网站建设微信公众号小程序怎么做
  • 计算机网站开发参考文献北京疫情最新情况
  • 培训教育机构郑州网站seo服务
  • 用javascirpt做的网站网站排名优化培训
  • 重庆市建设工程信息网站百度关键词推广公司哪家好
  • 网站设计影响seo的因素运营推广计划怎么写
  • ui网站设计模板厦门seo计费
  • 营销型网站制作流程如何策划一个营销方案
  • wordpress 复制页面seo搜索引擎优化人才
  • 青岛网站推广怎么做好北京最新疫情最新消息
  • e时代网站制作网站怎么弄
  • 新疆建设网站首页seo站内优化站外优化
  • 制作网站的方法美国新冠疫情最新消息
  • 免费建网站软件下载手机西安疫情最新消息1小时内
  • 网站seo在线诊断分析网络营销的渠道有哪些
  • 如何做个盈利的网站网站建设公司哪个好呀
  • 响应式中文网站模板河南百度推广代理商
  • 义乌购网站做代销怎么样手机cpu性能增强软件
  • 阿里云建公司网站网络推广网络营销和网站推广的区别