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

那个网站可以做域名跳转的网站优化公司开始上班了

那个网站可以做域名跳转的,网站优化公司开始上班了,青铜峡网站建设推广,东营市建设工程网官网Java备忘录模式 摘要实现范例 备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象 备忘录模式属于行为型模式 摘要 1. 意图 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对…

Java备忘录模式

    • 摘要
    • 实现
    • 范例

  • 备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象

  • 备忘录模式属于行为型模式

摘要

1. 意图

  • 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态

2. 主要解决

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

3. 何时使用

  • 很多时候我们总是需要记录一个对象的内部状态,这样做的目的就是为了允许用户取消不确定或者错误的操作,能够恢复到他原先的状态,使得他有”后悔药”可吃

4. 如何解决

  • 通过一个备忘录类专门存储对象状态

5. 关键代码

  • 客户不与备忘录类耦合,与备忘录管理类耦合

6. 应用实例

  • 后悔药;
  • 打游戏时的存档;
  • Windows里的ctri+z;
  • IE中的后退;
  • 数据库的事务管理;

7. 优点

  • 给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态;
  • 实现了信息的封装,使得用户不需要关心状态的保存细节;

8. 缺点

  • 消耗资源
    如果类的成员变量过多,势必会占用比较大的资源,而且每一次保存都会消耗一定的内存

9. 使用场景

  • 需要保存/恢复数据的相关状态场景;
  • 提供一个可回滚的操作;

10. 注意事项

  • 为了符合迪米特原则,还要增加一个管理备忘录的类;
  • 为了节约内存,可使用原型模式+备忘录模式;

实现

在这里插入图片描述

备忘录模式使用三个类 Memento 、 Originator 和 CareTaker

  1. 定义类Memento包含了要被恢复的对象的状态;
  2. 定义类Originator创建并在Memento对象中存储状态;
  3. 定义类Caretaker对象负责从Memento中恢复对象的状态;
  4. 最后使用MementoPatternDemo类使用CareTaker和Originator对象来显示对象的状态恢复;

范例

1. 创建 Memento 类

Memento.java

package com.demo.gof;
public class Memento {private String state;public Memento(String state){this.state = state;}public String getState(){return state;}    
}

2. 创建 Originator 类

Originator.java

package com.demo.gof;
public class Originator {private String state;public void setState(String state){this.state = state;}public String getState(){return state;}public Memento saveStateToMemento(){return new Memento(state);}public void getStateFromMemento(Memento Memento){state = Memento.getState();}
}

3. 创建 CareTaker 类

CareTaker.java

package com.demo.gof;
import java.util.ArrayList;
import java.util.List;public class CareTaker {private List<Memento> mementoList = new ArrayList<Memento>();public void add(Memento state){mementoList.add(state);}public Memento get(int index){return mementoList.get(index);}
}

4. 使用 CareTaker 和 Originator 对象

MementoPatternDemo.java

package com.demo.gof;
public class MementoPatternDemo {public static void main(String[] args) {Originator originator = new Originator();CareTaker careTaker = new CareTaker();originator.setState("State #1");originator.setState("State #2");careTaker.add(originator.saveStateToMemento());originator.setState("State #3");careTaker.add(originator.saveStateToMemento());originator.setState("State #4");System.out.println("Current State: " + originator.getState());        originator.getStateFromMemento(careTaker.get(0));System.out.println("First saved State: " + originator.getState());originator.getStateFromMemento(careTaker.get(1));System.out.println("Second saved State: " + originator.getState());}
}

编译运行以上 Java 范例,输出结果如下

$ javac -d . src/main/com.demo/gof/MementoPatternDemo.java
$ java  com.demo.gof.MementoPatternDemo
Current State: State #4
First saved State: State #2
Second saved State: State #3
http://www.mmbaike.com/news/35101.html

相关文章:

  • 广州网站建设鞍山免费b2b
  • 网站建设思维导图的要求谷歌浏览器下载电脑版
  • 衡阳网站制作谷歌搜索引擎镜像入口
  • 哪里可以检测短链脂肪酸seo短视频入口引流
  • 网站的做网站公司企业网站推广策划书
  • app软件网站开发seo营销外包
  • 外包app公司不给源代码台州seo排名扣费
  • 龙岩做网站的地方有哪些关键词搜索排行榜
  • 东莞设计公司网站推广文案范文100字
  • 做游戏女角色去衣的网站在线刷关键词网站排名
  • 官方网站模板杭州优化公司哪家好
  • 平台网站兼职做sap成人职业技能培训有哪些项目
  • 什么网站可以做软件有哪些内容seo专员是什么职业
  • 随州网站制作价格9个广州seo推广神技
  • 带搜索的下拉框网站中山seo
  • 南昌网站建设模板服务商湖南百度推广公司
  • 做企业网站赚钱吗建站seo是什么
  • 网站加载速度影响因素易观数据app排行
  • 做社交网站开发网站推广步骤
  • 万州网站建设福州短视频seo机会
  • 国内全屏网站有哪些搜索引擎优化与推广技术
  • 好的h5网站模板百度账号登录不了
  • 贸易公司做网站有优势吗佛山网站排名提升
  • 病理学系列教材的建设与实践 教学成果奖申报网站100条经典广告语
  • 怎么让别人做网站指数搜索
  • 大连网站建设是什么电商seo名词解释
  • 江西省飞宏建设工程有限公司 网站seo网络排名优化哪家好
  • 玉林做网站5151app是交友软件么
  • 天津哪家做网站好网站关键词如何快速上首页
  • 鞍山网站建设找金航营销团队公司