码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式之备忘录模式

时间:2017-05-27 14:21:53      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:备忘录模式   memento   撤销操作的实现原理   设计模式   备忘录   

1、备忘录模式简介:


    a、场景:

    -  录入大批人员资料。正在录入当前人资料时,发现一个人录入错了,此时需要恢复上一个人资料时在进行修改。

    -  Word 文档编辑时,忽然电脑死机或者是断电,再打开时,可以看到 word 提示你恢复到以前的文档。

    -  管理系统中,公文撤回功能。公文发送回去后,想撤回来。


    b、核心:

    - 就是保存某个对象内部状态的拷贝,这样以后就可以将该对象恢复到原先的状态中。

    

    c、结构:

    -  源发器类: Originator

        *  负责创建一个备忘录 Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态。

    -  备忘录类: Memento

        *  负责存储 Originator 对象的内部状态,并可防止 Originator 以外的其他对象,访问备忘录 Memento。

    -  负责人类: CareTake

        *  负责保存好备忘录 Memento。


2、简单的代码演示:

    

    a、Emp 类为源发器类(在类中提供了 memento() 方法,进行备忘操作,即返回一个新创建的备忘录类对象。提供了 recovery() 方法,提供恢复上一步的操作。)EmpMemento 类为备忘录类,即类中提供和 Emp 类中一样的成员变量。EmpCareTaker 类为负责人类,提供保存备忘录的 set、get 方法。


技术分享

技术分享

技术分享


    c、看看 Client17 测试类输出的结果,以及示例代码中的类图关系。


技术分享

技术分享


    注:EmpCareTaker 可以用 List 或者 Stack 进行保存,这样就可以进行一系列的撤销操作了。


3、开发中常见的应用场景:


    -  棋类游戏中的悔棋操作

    -  普通软件中的撤销操作

    -  数据库软件中的,事务管理中的回滚操作

    -  Photoshop 软件中的历史记录

本文出自 “12392717” 博客,请务必保留此出处http://12402717.blog.51cto.com/12392717/1930111

设计模式之备忘录模式

标签:备忘录模式   memento   撤销操作的实现原理   设计模式   备忘录   

原文地址:http://12402717.blog.51cto.com/12392717/1930111

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!