网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

行为型设计模式-备忘录模式详解-创新互联

| 0 基本介绍

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

成都创新互联公司专注于企业全网整合营销推广、网站重做改版、松岭网站定制设计、自适应品牌网站建设、H5场景定制成都商城网站开发、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为松岭等各大城市提供网站开发制作服务。

2 | 0 模式结构

行为型设计模式 - 备忘录模式详解

Originator(发起者):记录当前的状态,负责创建和恢复备忘录

Memento(备忘录):负责存储发起者的状态,在需要的时候提供发起人需要的状态

Caretaker(管理者):管理备忘录

3 | 0 代码演示

(这里我们以单角色、单状态、单备份来演示,思想是相同的,无非是存储数据结构上的区别)

备忘录角色,定义了存储状态的变量,可以根据实际需求定义对应的存储对象

public class Memento {    private String state;    public String getState() {        return state;    }    public void setState(String state) {        this.state = state;    }}

发起者角色,存储状态,并且可以创建备忘录和将状态恢复为备忘录的值

public class Originator {    private String state;    public String getState() {        return state;    }    public void setState(String state) {        this.state = state;    }    public Memento createMemento() {        Memento memento = new Memento();        memento.setState(state);        return memento;    }    public void restoreMemento(Memento memento) {        this.state = memento.getState();    }}

管理者角色,管理了备忘录

public class Caretaker {    private Memento memento;    public Memento getMemento() {        return memento;    }    public void setMemento(Memento memento) {        this.memento = memento;    }}

测试类

public class Client {    @Test    public void test() {        //设置初始状态        Originator originator = new Originator();        originator.setState("状态1");        System.out.println("初始状态:" + originator.getState());        //创建管理者        Caretaker caretaker = new Caretaker();        caretaker.setMemento(originator.createMemento());        //更新状态        originator.setState("状态2");        System.out.println("跟新状态:" + originator.getState());        //恢复状态        originator.restoreMemento(caretaker.getMemento());        System.out.println("恢复状态:" + originator.getState());    }}

运行结果

初始状态:状态1跟新状态:状态2恢复状态:状态1

4 | 0 模式分析

优点:

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

缺点:

  • 在实际应用中,备忘录模式都是多状态和多备份的,发起人角色的状态需要存储到备忘录对象中,对资源的消耗是比较严重的,为了节约内存,可以配合原型模式使用

应用场景:

  • 游戏的存档
  • CTRL + Z 撤销
  • 浏览器的后退
  • 数据库的事务管理
  • ... ...

名称栏目:行为型设计模式-备忘录模式详解-创新互联
当前路径:http://bjjierui.cn/article/ccsojh.html

其他资讯