`

【转】设计模式——备忘录模式(Memento)

 
阅读更多

主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象,个人觉得叫备份模式更形象些,

通俗的讲下:假设有原始类A,A中有各种属性,A可以决定需要备份的属性,备忘录类B是用来存储A的一些内部状态,

类C呢,就是一个用来存储备忘录的,且只能存储,不能修改等操作。

 

Original类是原始类,里面有需要保存的属性value及创建一个备忘录类,用来保存value值。

Memento类是备忘录类,Storage类是存储备忘录的类,持有Memento类的实例,该模式很好理解。

◆Original类:

public class Original {

 

private String value;

 

public String getValue() {

return value;

}

 

 

public void setValue(String value) {

this.value = value;

}

 

 

public Original(String value) {

this.value = value;

}

 

 

public Memento createMemento(){

return new Memento(value);

}

 

public void restoreMemento(Memento memento){

this.value = memento.getValue();

}

}

 

◆Memento类:

public class Memento {

 

private String value;

 

 

public Memento(String value) {

this.value = value;

}

 

 

public String getValue() {

return value;

}

 

 

public void setValue(String value) {

this.value = value;

}

}

 

◆Storage类

public class Storage {

 

private Memento memento;

 

public Storage(Memento memento) {

this.memento = memento;

}

 

 

public Memento getMemento() {

return memento;

}

 

 

public void setMemento(Memento memento) {

this.memento = memento;

}

}

 

◆测试类:

public class Test {

 

 

public static void main(String[] args) {

 

 

// 创建原始类

Original origi = new Original("egg");

 

 

// 创建备忘录

Storage storage = new Storage(origi.createMemento());

 

 

// 修改原始类的状态

System.out.println("初始化状态为:" + origi.getValue());

origi.setValue("niu");

System.out.println("修改后的状态为:" + origi.getValue());

 

 

// 回复原始类的状态

origi.restoreMemento(storage.getMemento());

System.out.println("恢复后的状态为:" + origi.getValue());

}

}

 

◆输出:

初始化状态为:egg

修改后的状态为:niu

恢复后的状态为:egg

新建原始类时,value被初始化为egg,后经过修改,将value的值置为niu,最后倒数第二行进行恢复状态,结果成功恢复了。

--------------------- 

作者:panzihao_beijing 

来源:CSDN 

原文:https://blog.csdn.net/PanZiHao_BeiJing/article/details/80429919 

版权声明:本文为博主原创文章,转载请附上博文链接!

分享到:
评论

相关推荐

    Java设计模式-备忘录

    **Java设计模式——备忘录模式详解** 备忘录模式是一种行为设计模式,它允许对象在不破坏封装性的前提下捕获并存储其内部状态,以便稍后恢复到该状态。这种模式常用于在游戏中保存进度、撤销/重做操作、以及在复杂...

    深入浅出设计模式——备忘录模式(MementoPattern)

    【备忘录模式(Memento Pattern)】是一种设计模式,主要目的是为了在不破坏对象封装性的前提下,能够保存和恢复对象的内部状态。这种模式常用于实现撤销/重做功能,例如在文本编辑器、游戏或数据库管理系统中。通过...

    设计模式——备忘录模式的学习与理解

    备忘录模式是一种行为设计模式,其主要目的是在不破坏对象封装性的前提下,能够安全地保存和恢复一个对象的内部状态。这种模式在需要撤销/重做操作的场景中非常有用,比如文本编辑器、游戏存档、财务软件等。 在...

    Python设计模式之备忘录模式原理与用法详解

    本文实例讲述了Python设计模式之备忘录模式原理与用法。...设计模式——备忘录模式 备忘录模式(Memento Pattern):不破坏封装性的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态,这样已经后就可将

    设计模式_行为型_备忘录模式.md

    备忘录模式(Memento)是一种行为型设计模式,它允许在不暴露对象的实现细节的情况下,捕获并保存对象的内部状态,从而可以在未来某个时刻恢复到之前的状态。备忘录模式特别适用于实现撤销操作,或是需要进行状态...

    程序设计模式实例分析

    在备忘录Memento中有两个接口,其中Caretaker只能看到备忘录中的窄接口,它只能将备忘录传递给其他对象。Originator可以看到宽接口,允许它访问返回到先前状态的所有数据。 3. **Caretaker(负责人)**:负责保存好...

    设计模式可复用面向对象软件的基础.zip

    5.6 MEMENTO(备忘录)—对象行为型 模式 188 5.7 OBSERVER(观察者)—对象行为型 模式 194 5.8 STATE(状态)—对象行为型模式 201 5.9 STRATEGY(策略)—对象行为型 模式 208 5.10 TEMPLATE METHOD(模板方法) ...

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    3. **行为型模式**:包括策略(Strategy)、模板方法(Template Method)、观察者(Observer)、迭代器(Iterator)、访问者(Visitor)、责任链(Chain of Responsibility)、命令(Command)、备忘录(Memento)、...

    23种 设计模式---面向对象的基本原则

    - 备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后恢复对象的状态。 - 观察者模式(Observer):定义对象之间的一对多依赖关系,当一个对象的状态...

    设计模式代码——c#

    C#设计模式(23种设计模式) 1. 单件模式(Singleton Pattern) ...20. 备忘录模式(Memento Pattern) 21. 策略模式(Strategy Pattern) 22. 访问者模式(Visitor Pattern) 23. 状态模式(State Pattern)

    常见设计模式的解析和实现(C++)之十一

    本文将深入探讨一个重要的设计模式——备忘录模式(Memento),它是“常见设计模式的解析和实现(C++)之十一”的主题。 备忘录模式是一种行为设计模式,它提供了一种在不破坏封装性的前提下,捕获对象状态并在需要时...

    design-pattern-java.pdf

    协调多个对象之间的交互——中介者模式(三) 协调多个对象之间的交互——中介者模式(四) 协调多个对象之间的交互——中介者模式(五) 备忘录模式-Memento Pattern 撤销功能的实现——备忘录模式(一) 撤销功能...

    X-gen PPT下载——《研磨设计模式》 实战

    3. **行为型模式**:包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、备忘录模式(Memento)、观察者模式...

    设计模式 让你轻松理解设计模式,提高开发效率

    备忘录模式是一种行为型设计模式,它捕获一个对象的内部状态,并允许该对象在以后恢复之前保存的状态。该模式提供了一种在不破坏封装性的前提下捕获一个对象内部状态的方法,使得对象可以在内部状态被更改之后恢复到...

    设计模式精解-GoF 23种设计模式解析附C++实现源码.pdf

    - **3.5 Memento模式**:备忘录模式捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态。 - **3.6 Mediator模式**:中介者模式用一个中介对象来封装一系列的对象...

    设计模式C++版

    5. Memento模式,备忘录模式,在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 6. Mediator模式,中介者模式,用一个中介对象来封装一系列的对象交互。 ***mand模式,命令模式,将请求...

    设计模式-可复用面向对象软件的基础

    其中包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、备忘录模式(Memento)、观察者模式(Observer)、状态模式...

Global site tag (gtag.js) - Google Analytics