`
men4661273
  • 浏览: 275614 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java设计模式-Memento(备忘录)模式

    博客分类:
  • java
阅读更多
一、Memento模式的目的:
       memento是一个保存另外一个对象内部状态拷贝的对象.这样以后就可以将该对象恢复到原先保存的状态.

二、Memento模式的简单例子:


package memento;  
  
import java.io.File;  
  
public class Originator {  
      
    private int number;   
    private File file = null;  
      
    public Originator(){  
          
    }  
      
    // 创建一个Memento,将自身作为参数传入  
    public Memento getMemento(){  
        return new Memento(this);  
    }  
      
    //从Memento中取出保存的数据,恢复为原始状态  
    public void setMemento(Memento m){  
        number = m.getNumber();  
        file = m.getFile();  
    }  
  
    public int getNumber() {  
        return number;  
    }  
  
    public void setNumber(int number) {  
        this.number = number;  
    }  
  
    public File getFile() {  
        return file;  
    }  
  
    public void setFile(File file) {  
        this.file = file;  
    }     
}  
 
          package memento;  
  
import java.io.File;  
import java.io.Serializable;  
  
public class Memento implements Serializable {  
      
    private int number;  
    private File file = null;  
      
    public Memento(Originator o){  
        this.number = o.getNumber();  
        this.file = o.getFile();  
    }  
  
    public int getNumber() {  
        return this.number;  
    }  
  
    public void setNumber(int number) {  
        this.number = number;  
    }  
  
    public File getFile() {  
        return this.file;  
    }  
  
    public void setFile(File file) {  
        this.file = file;  
    }  
      
      
}  



三、Memento模式的特点:

在需要提供保存、恢复对象状态的类中,必须提供两个方法:

1.保存对象当前状态方法:将对象自身(this)作为参数传入,创建备忘录,也就通过
 public Memento getMemento(){  
        return new Memento(this);  
    } 
 

来构造一个Memento的对象,Memento类有一个带参的构造方法,参数为要保存的对象,这样,Memento对象就保存了Originator对象的属性
2.恢复对象之前状态的方法:,待Originator对象操作完成之后,通过
    
     public void setMemento(Memento m){      
                    number = m.getNumber();     
                    file = m.getFile();    
           } 
 

来传入之前构造的Memento对象,来恢复Originator原来对象的状态
该模式模式的缺点是耗费大,如果内部状态很多,再保存一份,无疑要浪费大量内存.

[img][/img]



参考 http://zuoqiang.iteye.com/blog/744024
  • 大小: 29.6 KB
分享到:
评论

相关推荐

    JAVA设计模式--备忘录模式.docx

    备忘录(Memento)模式又叫作快照(Snapshot)模式或Token模式,是一种对象的行为模式。在备忘录模式里,一个备忘录是一个对象,它存储另一个对象(备忘录的原发器)在某个瞬间的内部状态。备忘的目的就是为了以后在需要...

    Memento备忘录设计模式实例-绘图程序

    这是运用Memento设计模式,设计的一个简单实例, 你可以通过工具栏选择绘制不同图形,使用备份创建备忘录,然后选择恢复进行绘制图形的恢复。 http://blog.csdn.net/ziyuanxiazai123/article/details/12421265

    设计模式_备忘录模式.zip

    备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。 备忘录模式java demo

    java版本二十三种设计模式.zip

    <!-- TOC --> - 23种设计模式 - 工厂方法模式(Factory Method) - 抽象工厂模式(Abstract Factory) - 单例模式(Singleton) - 建造者模式(Builder) - 原型模式(Prototype) ... - 备忘录模式(Memento) - 状态模式(S

    Java设计模式之备忘录模式(Memento模式)介绍

    主要介绍了Java设计模式之备忘录模式(Memento模式)介绍,memento是一个保存另外一个对象内部状态拷贝的对象,这样以后就可以将该对象恢复到原先保存的状态,需要的朋友可以参考下

    33种JAVA设计模式DEMO

    备忘录模式(Memento Pattern) 观察者模式(Observer Pattern) 状态模式(State Pattern) 空对象模式(Null Object Pattern) 策略模式(Strategy Pattern) 模板模式(Template Pattern) 访问者模式(Visitor ...

    Design-pattern-Adapter-Factory-Command-Memento:Java中的Adapter&Factory&Command&Memento设计模式

    设计模式-适配器-工厂-命令-备忘录Java中的Adapter&Factory&Command&Memento设计模式GoodHealth Fitness Corporation 是一家大型健身俱乐部。 它提供最先进的设备供其成员使用。 公司维护一个会员系统,用于记录会员...

    [Java设计模式(第2版)(Design.Patterns.in.Java).John.Metsker

    第19章 备忘录(memento)模式 163 第20章 操作型模式介绍 176 第21章 模板方法(template method)模式 182 第22章 状态(state)模式 193 第23章 策略(strategy)模式 204 第24章 命令(command)模式 213 第25章 解释器...

    java设计模式教程+源代码

    AbstractFactory ( 抽象工厂 ) FactoryMethod ( 工厂方法 ) ...Memento ( 备忘录模式 ) Observer ( 观察者模式 ) State ( 状态模式 ) Strategy ( 策略模式 ) TemplateMethod ( 模板方法 ) Visitor ( 访问者模式 )

    Java高手真经 - Java Web系统设计与架构 源代码(一)设计模式

    pattern/src/behavior/memento //13.7备忘录模式 pattern/src/behavior/state //13.8状态模式 pattern/src/behavior/visitor //13.9访问者模式 pattern/src/behavior/mediator //13.10中介者模式 pattern/src/...

    研磨设计模式-part2

    第19章 备忘录模式(Memento) 第20章 享元模式(Flyweight) 第21章 解释器模式(Interpreter) 第22章 装饰模式(Decorator) 第23章 职责链模式(Chain of Responsibility) 第24章 桥接模式(Bridge) 第...

    研磨设计模式-part4

    第19章 备忘录模式(Memento) 第20章 享元模式(Flyweight) 第21章 解释器模式(Interpreter) 第22章 装饰模式(Decorator) 第23章 职责链模式(Chain of Responsibility) 第24章 桥接模式(Bridge) 第...

    研磨设计模式-part3

    第19章 备忘录模式(Memento) 第20章 享元模式(Flyweight) 第21章 解释器模式(Interpreter) 第22章 装饰模式(Decorator) 第23章 职责链模式(Chain of Responsibility) 第24章 桥接模式(Bridge) 第...

    用Java实现23种设计模式

    用Java实现23种设计模式 1. 创建型模式 工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern)...

    design-pattern-java.pdf

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

    Java面试 java设计模式整理 单例、工厂、策略等 面试使用,学习使用

    java的设计模式大体上分为三大类: 2 设计模式遵循的原则有6个: 2 1. 工厂模式(Factory Method) 2 2. 抽象工厂模式(Abstract Factory)...19、备忘录模式(Memento) 21 20、状态模式(State) 23 21、访问者模式等

    23种java版设计模式源码案例.zip

    23种java版设计模式源码案例.zip 0.目录 创建型模式(creational) 简单工厂(simplefactory) 动态工厂(dynamic) 抽象工厂(abstract) 单例模式(singleton) 建造者模式(builder) 原型模式(prototype) 结构型模式...

    超市管理系统java源码swing-king-design:23种java设计模式

    超市管理系统java源码...备忘录模式(memento) 观察者模式(observer) 状态模式(state) 空对象模式(null object) 策略模式(strategy) 模板模式(template) 访问者模式(visitor) 1.介绍 1.1 创建型模式(creational) 简单工

    JAVA经典设计模式大全

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

    设计模式文档

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

Global site tag (gtag.js) - Google Analytics