精华内容
下载资源
问答
  • 2022-04-20 15:25:11

    备忘录设计模式

    一、备忘录设计模式

    1、介绍

    备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将对象恢复到原先保存状态


    备忘录对象主要用来记录一个对象的某种状态或者某些数据,当要回退时,可以从备忘录对象离获取原来的数据进行恢复操作


    备忘录模式属于行为型模式




    2、UML

    在这里插入图片描述

    Orginator:对象(需要保存状态的对象)

    Memento:备忘录对象,负责保存Orginator内部状态的

    Caretaker:守护者对象,负责保存多个备忘录对象,使用集合管理,提高效率




    3、备忘录模式的注意事项和细节

    • 给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态
    • 实现了信息的封装,使得用户不必关心状态的保存细节
    • 如果类的成员变量过多,势必会占用比较大的资源,而且每一次保存都会消耗一定的内存
    • 适用场景:后悔药、游戏存档、windows中的撤回(ctri+z)、浏览器中的后退、数据库的事务管理
    • 为了节约内存,备忘录模式可以和原型模式配合使用




    二、案例1

    1、介绍

    使用备忘录模式,备忘对象Originator的属性state,可通过备忘录对象恢复




    2、UML

    在这里插入图片描述




    3、代码

    /**
     * @description: 源
     * @author: dashu
     * @create: 14:09
     */
    public class Originator {
    
        /**
         * 状态
         */
        private String state;
    
        /**
         * 获取状态
         * @return
         */
        public String getState() {
            return state;
        }
    
        /**
         * 状态赋值
         * @param state 状态
         */
        public void setState(String state) {
            this.state = state;
        }
    
        /**
         * 保存状态到备忘录
         * @return
         */
        public Memento saveStateMemento(){
            return new Memento(state);
        }
    
        /**
         * 通过备忘录恢复状态
         * @param memento
         */
        public void getSateFromMemento(Memento memento){
            state = memento.getState();
        }
    
    }
    
    /**
     * @description: 备忘录
     * @author: dashu
     * @create: 14:07
     */
    public class Memento {
    
        /**
         * 状态
         */
        private String state;
    
        public Memento(String state){
            this.state = state;
        }
    
        public String getState() {
            return state;
        }
    }
    
    /**
     * @description: 备忘录管理员
     * @author: dashu
     * @create: 14:13
     */
    public class Caretaker {
    
        /**
         * 备忘录集合
         */
        private List<Memento> mementos = new ArrayList<>();
    
        /**
         * 备忘录添加
         * @param memento
         */
        public void add(Memento memento){
            mementos.add(memento);
        }
    
        /**
         * 根据索引索取备忘录
         * @param index 索引值
         * @return
         */
        public Memento get(int index){
            return mementos.get(index);
        }
    
    }
    
    /**
     * @description: 客户端
     * @author: dashu
     * @create: 14:06
     */
    public class Client {
    
        public static void main(String[] args) {
            Originator originator = new Originator();
            Caretaker caretaker = new Caretaker();
    
            originator.setState("状态#1 攻击力 100");
    
            //保存当前状态
            caretaker.add(originator.saveStateMemento());
    
    
            originator.setState("状态#2 攻击力 80");
    
            //保存当前状态
            caretaker.add(originator.saveStateMemento());
    
    
            originator.setState("状态#3 攻击力 10");
    
            //保存当前状态
            caretaker.add(originator.saveStateMemento());
    
            System.out.println("恢复状态2:");
            originator.getSateFromMemento(caretaker.get(1));
            System.out.println("当前状态:" + originator.getState());
        }
    
    }
    






    三、案例2

    1、介绍

    通过备忘录模式备忘游戏角色的属性,并通过备忘录对象恢复




    2、UML

    在这里插入图片描述




    3、代码

    /**
     * @description: 游戏角色
     * @author: dashu
     * @create: 14:19
     */
    public class GameRole {
    
        /**
         * 攻击力
         */
        private int vit;
    
        /**
         * 防御力
         */
        private int def;
    
        public GameRole(int vit, int def) {
            this.vit = vit;
            this.def = def;
        }
    
        public void display() {
            System.out.println("游戏角色当前的攻击力:" + this.vit + ",防御力:" + this.def);
        }
    
        public int getVit() {
            return vit;
        }
    
        public void setVit(int vit) {
            this.vit = vit;
        }
    
        public int getDef() {
            return def;
        }
    
        public void setDef(int def) {
            this.def = def;
        }
    
    
        public Memento createMemento() {
            return new Memento(vit, def);
        }
    
        public void recoverGameRoleFromMemento(Memento memento) {
            this.vit = memento.getVit();
            this.def = memento.getDef();
        }
    
    }
    
    /**
     * @description: 备忘录
     * @author: dashu
     * @create: 14:21
     */
    public class Memento {
    
        /**
         * 攻击力
         */
        private int vit;
    
        /**
         * 防御力
         */
        private int def;
    
        public Memento(int vit, int def) {
            this.vit = vit;
            this.def = def;
        }
    
        public int getVit() {
            return vit;
        }
    
        public void setVit(int vit) {
            this.vit = vit;
        }
    
        public int getDef() {
            return def;
        }
    
        public void setDef(int def) {
            this.def = def;
        }
    }
    
    import java.util.HashMap;
    import java.util.List;
    
    /**
     * @description: 备忘录管理员
     * @author: dashu
     * @create: 14:16
     */
    public class Caretaker {
    
        private Memento memento;
    
        private List<Memento> mementos;
    
        private HashMap<String,List<Memento>> rolesMementos;
    
    
        public Memento getMemento() {
            return memento;
        }
    
        public void setMemento(Memento memento) {
            this.memento = memento;
        }
    }
    
    /**
     * @description: 客户端
     * @author: dashu
     * @create: 14:26
     */
    public class Client {
    
        public static void main(String[] args) {
    
    
            GameRole gameRole = new GameRole(100,100);
            System.out.println("和BOOS大战前状态:");
            gameRole.display();
    
            System.out.println("保存状态....");
            Caretaker caretaker = new Caretaker();
            caretaker.setMemento(gameRole.createMemento());
    
    
            System.out.println("和BOOS大战后状态:");
            gameRole.setVit(30);
            gameRole.setDef(30);
            gameRole.display();
    
            System.out.println("使用备忘录恢复状态....");
            gameRole.recoverGameRoleFromMemento(caretaker.getMemento());
            gameRole.display();
    
        }
    
    }
    
    更多相关内容
  • 使用tkinter包实现备忘录的界面实现,内容涵盖增删改查等(相对而言界面较简陋)
  • Android开发备忘录

    2021-12-22 17:45:46
    2.分类和管理(不同分类的备忘录添加、删除和修改,默认分类的每一条记录至少包括日期、类型和说明); 3.备忘录分类管理(根据时间段、类别等进行管理); 4.备忘录的闹铃提醒(例如某个月、某个星期或指定时间...
  • 使用Chrome版Todoist来:1 添加网页为任务:添加一篇博文到您的阅读清单,保存一个物品到您的购物车,以及创建工作任务以便跟进。2 计划您的一天:直接在插件中便捷地管理您的任务。3 在Chrome中完成任务:一旦您的...
  • SilverLight备忘录

    2021-10-11 22:14:49
    基于SilverLight的备忘录系统是运用微软的RIA(Rich Internet Application)技术和在SQL Server 2008后台数据库支持下而实现的一个富客户端应用程序,它具有跨平台、跨浏览器和高性能等特点,无论用户是在Windows操作...
  • 个人备忘录

    2018-12-18 08:32:45
    以图形用户界面的方式,实现对日常记事信息进行添加、删除、更新和查询操作。
  • 系统自带有很多实用的小功能,比如备忘录,此功能可以帮助用户记录一些重要的事情。如果自己有一件重要的事情,但容易忘记,那么可以用备忘录记录下载,放在桌面,能够随时提醒自己。那么如何给桌面添加备忘录?...

    于一个记性不好的人,是很容易忘记自己要什么的。这个时候在备忘录写好每天的任务就可以时刻提醒我们了。那么怎么在电脑桌面添加备忘录呢?有很多人不是很了解,下面,小编给大家带来了在电脑桌面添加备忘录的图文教程。

    系统自带有很多实用的小功能,比如备忘录,此功能可以帮助用户记录一些重要的事情。如果自己有一件重要的事情,但容易忘记,那么可以用备忘录记录下载,放在桌面,能够随时提醒自己。那么如何给桌面添加备忘录?下面,小编跟大家介绍在电脑桌面添加备忘录的技巧。

    怎么在电脑桌面添加备忘录

    点开Windows菜单,选择所有应用。

    136459455_1_20180622120019741.png

    桌面备忘录电脑图解1

    打开所有应用中的附件菜单,选择当中的“便利贴”。

    136459455_2_2018062212002023.png

    添加备忘录电脑图解2

    桌面上出现便签框,可以在里面添加内容。

    136459455_3_20180622120020241.png

    添加备忘录电脑图解3

    点击左上角的“+”或者按Ctrl+N,可以增加便签。

    136459455_4_20180622120020366.png

    备忘录电脑图解4

    还有一个办法就是可以在搜索界面打开便签。

    136459455_5_20180622120020444.png

    备忘录电脑图解5

    又可以添加啦!

    136459455_6_20180622120020522.png

    电脑电脑图解6

    以上就是在电脑桌面添加备忘录的技巧。

    展开全文
  • 该项目主要实现了一个多功能备忘录,包括随笔便签、计算器以及音乐播放器。在随笔便签中,每个人所保存的便签信息不同,所以根据账号可以实现显示不同的便签信息。而在需要添加便签时,可以写入新便签,并以标题的...
  • 系统自带有很多实用的小功能,比如备忘录,此功能可以帮助用户记录一些重要的事情。如果自己有一件重要的事情,但容易忘记,那么可以用备忘录记录下载,放在桌面,...用户就希望能在电脑桌面添加一个备忘录。这该如...

    系统自带有很多实用的小功能,比如备忘录,此功能可以帮助用户记录一些重要的事情。如果自己有一件重要的事情,但容易忘记,那么可以用备忘录记录下载,放在桌面,能够随时提醒自己。那么如何给桌面添加备忘录?下面,小编跟大家介绍在电脑桌面添加备忘录的技巧。

    在日常工作和学习的过程中,有时会忘记需要做的事或已经做过的事情,这时候我们就需要制作一个备忘录和工作/学习日志。用户就希望能在电脑桌面添加一个备忘录。这该如何操作呢?会不会非常复杂呢?下面,小编给大家带来了电脑桌面添加备忘录的操作图文。

    怎么在电脑桌面添加备忘录

    点开Windows菜单,选择所有应用。

    f0f0a713f59d66ce68449b4cc00c0b3a.png

    桌面备忘录电脑图解-1

    打开所有应用中的附件菜单,选择当中的“便利贴”。

    4fe0e332a4e5e19159b4614207133813.png

    电脑电脑图解-2

    桌面上出现便签框,可以在里面添加内容。

    e9e3f0013013e3ead37ef781e52ecd71.png

    添加备忘录电脑图解-3

    点击左上角的“+”或者按Ctrl+N,可以增加便签。

    d4b0d5af816421aa35bdfbde62ace5ff.png

    桌面备忘录电脑图解-4

    还有一个办法就是可以在搜索界面打开便签。

    85cfe73e32540293cbea7d60d857cf9a.png

    电脑电脑图解-5

    又可以添加啦!

    632fb8e01602a2d2121bbfae7d603626.png

    备忘录电脑图解-6

    以上就是在电脑桌面添加备忘录的技巧。

    展开全文
  • 系统自带有很多实用的小功能,比如备忘录,此功能可以帮助用户记录一些重要的事情。如果自己有一件重要的事情,但容易忘记,那么可以用备忘录记录下载,放在桌面,能够随时提醒自己。那么如何给桌面添加备忘录?...

    于一个记性不好的人,是很容易忘记自己要什么的。这个时候在备忘录写好每天的任务就可以时刻提醒我们了。那么怎么在电脑桌面添加备忘录呢?有很多人不是很了解,下面,小编给大家带来了在电脑桌面添加备忘录的图文教程。

    系统自带有很多实用的小功能,比如备忘录,此功能可以帮助用户记录一些重要的事情。如果自己有一件重要的事情,但容易忘记,那么可以用备忘录记录下载,放在桌面,能够随时提醒自己。那么如何给桌面添加备忘录?下面,小编跟大家介绍在电脑桌面添加备忘录的技巧。

    怎么在电脑桌面添加备忘录

    点开Windows菜单,选择所有应用。

    136459455_1_20180622120019741.png

    桌面备忘录电脑图解1

    打开所有应用中的附件菜单,选择当中的“便利贴”。

    136459455_2_2018062212002023.png

    添加备忘录电脑图解2

    桌面上出现便签框,可以在里面添加内容。

    136459455_3_20180622120020241.png

    添加备忘录电脑图解3

    点击左上角的“+”或者按Ctrl+N,可以增加便签。

    136459455_4_20180622120020366.png

    备忘录电脑图解4

    还有一个办法就是可以在搜索界面打开便签。

    136459455_5_20180622120020444.png

    备忘录电脑图解5

    又可以添加啦!

    136459455_6_20180622120020522.png

    电脑电脑图解6

    以上就是在电脑桌面添加备忘录的技巧。

    展开全文
  • 日常工作生活中,操作电脑时我们对于一些账号密码以及工作碎片信息,单靠脑子是记不住的,需要用文字记录...1.效能备忘录效能备忘录是一款完全免费、美观易用、功能强大的备忘录和笔记本软件,使用效能备忘录软件...
  • 安卓手机怎么添加一款语音便签app较高版本的iOS系统上有一款名叫“语音备忘录”的app,这是苹果系统自带的一款语音备忘工具,很好用。只是,这款语音备忘录app只能在苹果的iOS系统上使用,不能在安卓系统上使用。...
  • 《基于Android的手机备忘录软件设计》由会员分享,可在线阅读,更多相关《基于Android的手机备忘录软件设计(25页珍藏版)》请在皮匠网上搜索。1、课程设计报告(本科)课程:嵌入式系统学号:姓名:班级:教师:时间:...
  • 苹果备忘录app是一款非常好用的备忘录app,苹果备忘录app可以记录生活琐事,苹果备忘录app也可以记录工作安排和日程,支持进行数据备份处理,还可以设置事件提醒。软件介绍苹果备忘录app是一款精仿Iphone备忘录的...
  • ASP.NET操作Excel备忘录

    2021-01-01 23:36:27
    问题一:拒绝访问 拒绝访问的可能性有三种, 一种是当前操作用户没有访问权限。 二种是进程里面已经有着Excel.exe的进程存在而程序没有及时的清除。 三种是指定的Excel正在被另一个进程使用。 第一种解决方案 向指定...
  • C++常见设计模式之备忘录模式

    千次阅读 2021-11-19 19:26:44
    1、备忘录模式:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。 2、涉及角色: 1)发起人(Originator):负责创建一个备忘录(Memento...
  • 张慧娥 李彩红 王锦 唐亮摘要:针对传统备忘录内容单一性,人们生活节奏的加快,智能手机的普及,该文提出一种基于Android的多媒体备忘录的设计与实现方法。该设计在传统备忘录的基础上实现了语音、图像和视频文件、...
  • 备忘录是什么 备忘录不单只是文本。快速记下灵感或添加核对清单、图像和网页链接等。共享的文件夹可让您与群组共享整个备忘录文件夹,所有人都可以参与。优化后的全新强大搜索功能可帮您更快找到想要的备忘录。询问 ...
  • iOS8备忘录

    千次阅读 2021-01-17 19:20:33
    iOS8备忘录app是专门为安卓手机用户打造的一款备忘录软件,软件的功能、界面、背景和字号大小都是模范iOS8系统的备忘录设计的,让你的手机能够拥有非常简便的iOS8备忘录,满足用户对苹果机的追求需求;软件拥有苹果...
  • 简单iOS备忘录App实现

    2021-06-07 12:34:19
    简单iOS备忘录App实现详细内容参考《疯狂iOS讲义》--李刚编著完整代码放到了GitHub。LeeLom MemoDemo一个很简单的iOS Demo,主要用来实现一下iOS应用程序沙盒的功能。程序功能允许用户自行添加,删除数据行,并且...
  • 如果您是 iPhone 用户,平时打开备忘录只是记录下文字,那就太浪费这个功能了,因为在 iPhone 中,备忘录这一应用能够实现的比你想象得还要多得多。下面就来分享一些 iPhone 备忘录的使用技巧。同步备忘录如果您有多...
  • Python备忘录(自用)

    千次阅读 2021-12-13 10:02:04
    师兄之前整理的python备忘录,上传防丢 1. Anaconda Prompt 怎么切换工作路径到E盘 以及更改默认打开路径? 链接: https://blog.csdn.net/c20081052/article/details/88839479. 2. pip到指定虚拟环境中 链接: ...
  • 备忘录模式的Java实现

    2020-08-26 22:19:19
    备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。 介绍 意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 ...
  • 有趣的是,对于不使用备忘录的 iOS 用户来说,这总有些「阴魂不散」;而此无处不在的设计恰恰中我下怀,在需要收集资料的时候工具就手边。 iOS 11 的控制中心添加了自定义的按钮,备忘录捷足先登,占据一角。配合了 ...
  • 首先说一下,iOS和macOS里面的备忘录、提醒事项、日历是我每天都会用到的三个苹果原生app。接下来我会分点概述这三个app的应用,并且会举出平时使用的实例。 前提条件 如果你有两台以上苹果设备,这三个app合作...
  • 这是一款使用纯CSS制作的纯CSS3超酷日常工作备忘录列表特效。该特效中没有使用js代码,通过Checkbox技巧来完成交互动作。它可以记录某项日常工作是否完成。整体界面十分时尚大方。制作方法HTML结构该特效使用和元素...
  • 基于安卓Android的备忘录系统APP的设计(Eclipse)(任务书,开题报告,论文13000字,程序代码)摘要随着移动互联网的高速发展,智能手机的使用已经普及。...为了帮助移动用户记住日常事务信息,开发一个简单便捷的备忘录系...
  • 【ios开发/Xcode】实现多功能备忘录

    千次阅读 2022-03-13 10:44:31
    【ios开发/Xcode】实现多功能备忘录引言具体功能及实现登录界面主要源代码注册界面主要源代码注册界面主要源代码增删改查主要源代码音乐播放器界面源代码计算器界面源代码所有源码下载总结 引言 一、项目来源及意义 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,126
精华内容 7,650
关键字:

备忘录添加用户