备忘录模式
1.定义
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将改对象恢复到原先保存的状态。
2.示例代码
仿真系统,模拟流程A运行情况的示例
/*模拟运行流程A的对象的备忘录接口,是个窄接口*/ public interface FlowAMockMemento{ //空接口 } /*模拟运行流程A,只是个示意,代指某个具体的流程*/ public class FlowaMock{ //流程名称 private String flowName; //代指某个中间结果,需要外部存储的状态数据 private int tempResult; //代指某个中间状态,需要外部存储的状态数据 private int tempState; //构造方法传入流程名称 public FlowAMock(String flowName){ this.flowName = flowName; } //示意流程运行的第一个阶段 public void runPhaseOne(){ tempResult = 3; tempState = "PhaseOne"; } //示意按照方案一来运行后半流程 public void schema1(){ this.tempState += ",Schema1"; System.out.println(this.tempState + ":now run "+ tempResult); this.tempResult += 11; } //示意按照方案二来运行后半流程 public void schema2(){ this.tempState += ",Schema2"; System.out.println(this.tempState + ":now run "+ tempResult); this.tempResult += 22; } //创建保存原发器对象状态的备忘录对象 public FlowAMockMemento createMemento(){ return new MementoImpl(this.tempResult,this.tempState); } //重新设置原发器对象的状态,让其回到备忘录对象记录的状态 public void setMemento(FlowAMockMemento memento){ MementoImpl mementoImpl = (MementoImpl)memento; this.tempResult = memento.getTempResult(); this.tempState = memento.getTempState(); } //真正备忘录对象,实现备忘录窄接口,实现成私有内部类,不让外部访问 private static class MementoImpl implements FlowAMockMemento{ //示意保存某个中间结果 private int tempResult; private String tempState; public MementoImpl(int tempResult,String tempState){ this.tempResult = tempResult; this.tempState = tempState; } public int getTempResult(){ return tempResult; } public String getTempState(){ return tempState; } } }
/*负责保存模拟运行流程A的对象的备忘录对象*/ public class FlowAMockMementoCareTaker{ //记录被保存的备忘录对象 private FlowAMockMemento memento = null; //保存备忘录对象 public void SaveMemento(FlowAMockMemento memento){ this.memento = memento; } public FlowAMockMemento retriveMemento(){ return memento; } }
/*客户端进行仿真模拟调用*/ public class Client{ public static void maiin(String args[]){ //创建模拟运行流程A的对象 FlowAMock mock = new FlowAMock("TestFlow"); //运行流程的第一个阶段(准备数据) mock.runPhaseOne(); //创建一个管理者 FlowAMementoCareTaker careTaker = new FlowAMementoCareTaker(); //创建此时对象的备忘录对象 FlowAMockMemento memento = mock.createMemento(); careTaker.saveMemento(memento); //按照方案一来运行流程的后半部分 mock.schema1(); //从管理者对象获取备忘录对象,恢复内部状态 mock.setMemento(careTaker.retriveMemento()); //按照方案二来运行流程的后半部分 mock.schema2(); } }
3.实际应用
备忘录模式中,捕获的内部状态存储在备忘录对象中,而备忘录对象通常会被存储在原发器对象之外,也就是被保存状态的对象的外部,通常是存放在管理者对象里边。备忘录模式中,为了控制对象的访问,出现了窄接口和宽接口的概念。窄接口:管理者只能看到备忘录的窄接口,窄接口的实现中通常没有任何方法,只是一个类型标识。窄接口使得管理者只能将备忘录传递给其他对象。宽接口:原发器能看到一个宽接口,允许它访问所需的所有数据,通常实现成为原发器内部一个私有内部类。
备忘录模式的本质:保存和恢复内部状态
相关推荐
在实际开发中,备忘录模式可以与其他设计模式结合使用,如工厂模式用于创建备忘录对象,装饰器模式用于扩展备忘录的功能等。同时,需要注意的是,过度使用备忘录模式可能会导致内存消耗增加,因此在实现时需要权衡...
JAVA-设计模式-行为型模式-备忘录模式
备忘录模式是一种在软件工程中广泛使用的面向对象设计模式,它主要用来安全地保存对象的状态,以便在需要时能够恢复到先前的状态。备忘录模式的核心思想是封装对象的状态,将其保存到一个独立的对象(备忘录)中,而...
备忘录模式是一种在软件工程中广泛使用的面向对象设计模式,它主要用来安全地保存对象的状态,以便在需要时能够恢复到先前的状态。这个模式的名字来源于我们日常生活中使用的备忘录,它记录了一些重要的信息,当需要...
备忘录模式是一种常用的设计模式,它在软件工程中用于保存对象的状态,以便在需要时恢复到之前的状态。这种模式的主要目标是实现数据的安全存储,同时保持对象的封装性,避免对外部对象直接访问其内部状态。在iOS...
**Java设计模式——备忘录模式详解** 备忘录模式是一种行为设计模式,它允许对象在不破坏封装性的前提下捕获并存储其内部状态,以便稍后恢复到该状态。这种模式常用于在游戏中保存进度、撤销/重做操作、以及在复杂...
c++设计模式-行为型模式-备忘录模式;qt工程;c++简单源码;备忘录(Memento)模式的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先...
备忘录模式是一种在不破坏封装性的前提下,捕获一个对象的状态,并允许在未来的某个时刻恢复这个状态的设计模式。这种模式在很多场景下都非常有用,例如在游戏中保存进度、在编辑器中撤销/重做操作等。备忘录模式的...
Java设计模式中的备忘录模式(Memento Pattern)是一种用于保存对象状态的模式,以便在未来某一时刻能够恢复到之前的状态。这种模式的核心在于在不违反对象封装性的前提下,捕获对象的内部状态并将其存储起来。备忘...
备忘录模式(Memento Pattern)是一种行为设计模式,它允许在不破坏封装性的情况下捕获和恢复对象的内部状态。该模式通常用于需要撤销操作或恢复先前状态的情况下。备忘录模式包括三个主要组件:原始对象、备忘录...
- 备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的状态,并在该对象之外保存这个状态,以便以后恢复。 - 观察者模式(Observer):定义对象间的一种一对多依赖关系,当一个对象的状态发生改变时,...
备忘录模式是一种行为设计模式,它允许在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将对象恢复到原先保存的状态。这种模式通常用于游戏存档、撤销/重做操作、以及...
备忘录模式是一种行为设计模式,它允许在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将对象恢复到原先保存的状态。这种模式常用于需要记录用户操作历史或者游戏进度...
Java中的备忘录设计模式允许开发人员捕获和恢复对象的内部状态,而不违反封装。 ## 二、详细解释及实际示例 ... - 备忘录模式是一种软件设计模式,它提供了将对象恢复到其以前状态(通过回滚撤销)的能力。
备忘录模式(Memento Pattern)是软件设计模式中的一种,属于行为模式。它提供了一种方式来恢复对象到之前的状态,即“撤销”操作。备忘录模式的核心思想是保存对象的内部状态,以便在需要时能恢复到这个状态,而...
备忘录模式主要涉及三个角色: 1. **发起人(Originator)**:需要保存其内部状态的对象。它创建并存储备忘录,也可以从备忘录恢复状态。 2. **备忘录(Memento)**:存储发起人的内部状态。备忘录是发起人的私有...
备忘录模式(Memento Pattern)是一种行为设计模式,它允许在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将对象恢复到先前的状态。这种模式在需要撤销/重做功能、...
备忘录模式是一种在软件工程中广泛使用的结构型设计模式,其主要目的是为了在不破坏封装性的前提下,能够安全地保存对象的状态,并在需要时恢复到先前保存的状态。这种模式通常用于那些需要记录和回滚操作的重要场景...
备忘录模式(Memento Pattern)是软件设计模式中的一种行为模式,它的主要目的是在不破坏对象封装性的前提下,允许对象在特定时刻保存其内部状态,并能够在之后恢复到保存时的状态。这种模式广泛应用于撤销/重做功能...