`
chendw_hz
  • 浏览: 11402 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

备忘录模式

 
阅读更多

备忘录模式又叫快照模式或者Token模式 是对象的行为模式

备忘录模式是备忘录对象保存了发起者对象,在发起者对象变化之后,可以恢复变化之前的状态。

1,备忘录模式的角色:

发起者角色:负责创建备忘录角色,且将当前的对象保存在备忘录对象中去。。

备忘录角色:保存发起者角色的状态。

负责人角色:保存备忘录对象。不负责备忘录角色的内容。

2,模式实例

 现在以我们在读书的时候,老是经常用黑板写字。经常想恢复已经被擦掉的文字。以现在以老是想恢复黑板上已经被擦掉的文字。这样一个场景。很适合使用备忘录模式。

首先对角色进行划分。

老师是发起人角色,粉笔是备忘录角色。黑板是是负责人角色。负责保存备忘录对象。

如下:

//老师是发起人角色。首先要创建备忘录对象

public interface Teacher{

   //老是具有写的功能

   public void write();

  //创建备忘录模式

   public Chalk createMemo();

  //恢复已经擦除的内容

   public void restoreContent(Chalk chalk);

   //设置黑板内容

   public void setContent(String content);

}

 

//老师的具体实现类 

public class TeacherImpl implements Teacher{

   //需要备份的内容

    private String content;

    //构造子

    public TeacherImpl(String content){

          this.content=content;

    }

 

   //黑板上显示的内容

   public void write(){

         System.out.println("当前要在黑板上显示的内容:"+content)

   }

 

   //创建备份内容 

  public Chalk createMemo(){

           //创建备份

           return  new Chalk(content);

   }

 

   //恢复内容

   public void restoreContent(){

       this.content=chalk.getContent;

  }

 

  //重新设置黑板的内容

  public void setContent(String content){

        this.content=content;

  }

}

 

 //备忘录对象 粉笔。负责备忘的内容和状态。

public class Chalk{

   

  //内容 需要恢复的内容

   private String content;

  

   //构造子

   public chalk(String content);

    

   //设置内容

   public void setContent(String content){

      this.content=content;

  }

   

  //得到内容

   public void getContent(){

     return content; 

   } 

 

 }

 

//提供的黑板接口专门保存备份角色。

public interface Blockboard{

      //保存备份角色

      public void saveMemo(Chalk chalk)

   

     //得备份角色

    public Chalk getMemo();

}

 

 //负责人角色的具体实现类

public class BlockBoardImpl implements Blockboard{

    //备份内容

     private Chalk chalk;  

     //保存备份角色

      public void saveMemo(Chalk chalk){

          this.chalk = chalk;

     }

   

    //得到备份内容

    public Chalk getMemo(){

       return chalk;

   }

}

 

//客户端调用

public class Client{

    public static void  main(String args[]){

    

    Teacher teacher = new TeacherImpl("这道世界难题的结果是5");

    //创建备份对象

    Chalk   chalk=teacher.createMemo();

     //管理和保存备份对象。

    Blockboard block = new BlockboardImpl();

    block.saveMemo(chalk);

    techer.write();

   

    //改变黑板内容

    teacher.setContent("这个世界的没有什么难题!");

    teacher.write();

   

    //恢复黑板的中内容

    teacher.restoreContent();

    teacher.write();

  }

}

 

打印的结果:

这道世界难题的结果是5;

这个世界的没有什么难题!

这道世界难题的结果是5;

3:应用场景:

 A,

4:优点和缺点:

优点:

A、有时一些发起人对象的内部信息必须保存在发起人对象以外的地方,但是必须要由发起人对象自己读取,这时,
   使用备忘录模式可以把复杂的发起人内部信息对其他的对象屏蔽起来,从而可以恰当地保持封装的边界。
B、本模式简化了发起人类。发起人不再需要管理和保存其内部状态的一个个版本,客户端可以自行管理他们所需
   要的这些状态的版本。
缺点:

A、 如果发起人角色的状态需要完整地存储到备忘录对象中,那么在资源消耗上面备忘录对象会很昂贵。
B、当负责人角色将一个备忘录 存储起来的时候,负责人可能并不知道这个状态会占用多大的存储空间,从而无法
   提醒用户一个操作是否很昂贵

备忘录模式的核心:维护一个备忘录角色来保存要恢复的数据。

分享到:
评论

相关推荐

    备忘录模式.rar备忘录模式.rarjava设计模式

    备忘录模式是一种行为设计模式,它允许在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将对象恢复到原先保存的状态。这种模式常用于需要记录用户操作历史或者游戏进度...

    设计模式-备忘录模式(讲解及其实现代码)

    备忘录模式是一种在软件工程中广泛使用的面向对象设计模式,它主要用来安全地保存对象的状态,以便在需要时能够恢复到先前的状态。备忘录模式的核心思想是封装对象的状态,将其保存到一个独立的对象(备忘录)中,而...

    java设计模式-备忘录模式源代码

    备忘录模式是一种在软件工程中广泛使用的面向对象设计模式,它主要用来安全地保存对象的状态,以便在需要时能够恢复到先前的状态。这个模式的名字来源于我们日常生活中使用的备忘录,它记录了一些重要的信息,当需要...

    设计模式之备忘录模式

    备忘录模式(Memento Pattern)是软件设计模式中的一种,属于行为模式。它提供了一种方式来恢复对象到之前的状态,即“撤销”操作。备忘录模式的核心思想是保存对象的内部状态,以便在需要时能恢复到这个状态,而...

    设计模式之备忘录模式,内含可运行代码及详细解释

    备忘录模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在需要保护对象内部状态不被外部篡改的场景下。备忘录模式的核心思想是提供一种方法来捕获一个对象的内部状态,并在该对象之外保存这个状态...

    备忘录模式Demo

    备忘录模式是一种设计模式,它在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将对象恢复到原先保存的状态。这种模式常用于需要记录用户操作或者游戏进度等场景,允许...

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

    备忘录模式是一种在软件工程中广泛使用的结构型设计模式,其主要目的是为了在不破坏封装性的前提下,能够安全地保存对象的状态,并在需要时恢复到先前保存的状态。这种模式通常用于那些需要记录和回滚操作的重要场景...

    设计模式之备忘录模式(Memento Pattern)

    备忘录模式(Memento Pattern)是软件设计模式中的一种行为模式,它的主要目的是在不破坏对象封装性的前提下,允许对象在特定时刻保存其内部状态,并能够在之后恢复到保存时的状态。这种模式广泛应用于撤销/重做功能...

    C#备忘录模式 代码例子

    备忘录模式是一种设计模式,它在不破坏封装性的前提下,保存对象的内部状态,以便在需要的时候恢复。在C#中,备忘录模式常用于实现撤销/重做功能,或者在需要记录和恢复对象状态的情况下。下面将详细解释备忘录模式...

    备忘录模式实现及案例

    备忘录模式是一种设计模式,属于行为模式类型,它的主要作用是保存对象的状态,以便在需要的时候能够恢复到之前的状态。这种模式的核心在于提供一种方式,可以在不破坏封装的前提下,捕获并存储一个对象的内部状态,...

    C#面向对象设计模式纵横谈(21):(行为型模式) Memento 备忘录模式

    备忘录模式(Memento Pattern)是一种行为设计模式,它允许在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将对象恢复到先前的状态。这种模式在需要撤销/重做功能、...

    设计模式之备忘录模式的Java版本实现

    备忘录模式是一种在软件设计中广泛使用的结构型设计模式,它的主要目的是为了保存对象的状态,以便在需要的时候能够恢复到之前的状态。备忘录模式的核心思想是通过创建一个备忘录对象来存储原对象的状态,这个备忘录...

    设计模式 - 备忘录模式(C++实例)

    备忘录模式是一种在不破坏封装性的前提下,捕获一个对象的状态,并允许在未来的某个时刻恢复这个状态的设计模式。这种模式在很多场景下都非常有用,例如在游戏中保存进度、在编辑器中撤销/重做操作等。备忘录模式的...

    备忘录模式 C++ 实现

    备忘录模式是一种行为设计模式,它允许在不破坏封装性的前提下,捕获和恢复一个对象的内部状态。在C++中实现备忘录模式,可以有效地帮助开发者在程序运行过程中保存对象的状态,以便在需要时恢复到之前的状态,这...

    备忘录模式笔记1

    备忘录模式笔记 备忘录模式(Memento)是一种非常有用的设计模式,它主要用于保存一个对象的某个状态,以便在适当的时候恢复对象。下面我们将对备忘录模式进行详细的解释和分析。 备忘录模式的定义 备忘录模式是...

    备忘录模式代码示例

    备忘录模式是一种设计模式,它允许对象在不破坏封装性的前提下,捕获和存储其内部状态,以便在需要时能恢复到该状态。这种模式在需要保存和恢复对象状态,而又不想对外部世界暴露其内部实现细节时非常有用。备忘录...

    备忘录模式-极客学院-java-课件代码

    备忘录模式是一种行为设计模式,它允许在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将对象恢复到原先保存的状态。这种模式常用于需要撤销/重做操作的场景,或者在...

    备忘录模式t31

    备忘录模式是一种设计模式,属于行为模式类型,它的主要目的是在不破坏对象封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后恢复对象到先前的状态。这种模式通常用于实现撤销/重做...

    14备忘录模式1

    备忘录模式是一种设计模式,它允许我们保存和恢复对象的内部状态,而无需暴露对象的实现细节。这种模式在需要记录和恢复对象状态的情况下非常有用,比如在游戏中保存进度、在文档编辑器中撤销操作或者在复杂计算过程...

    iOS 设计模式 备忘录模式

    备忘录模式是设计模式中的一种,它主要用于保存对象的状态,以便在未来恢复到该状态。这个模式尤其适用于需要撤销/重做功能的场景。 备忘录模式的核心思想是创建一个备忘录对象,该对象存储另一个对象的内部状态,...

Global site tag (gtag.js) - Google Analytics