某系统提供了用户信息操作模块,用户可以修改自己的各项信息。为了使操作过程更加人性化,现使用备忘录模式对系统进行改进,使得用户在进行了错误操作之后可以恢复到操作之前的状态。用户信息中包含账号、密码、电话

简介: 该博客文章通过Java代码示例介绍了备忘录模式(Memento Pattern)的应用,通过创建备忘录对象保存用户信息的状态,允许用户在进行错误操作后能够恢复到之前的状态。

某系统提供了用户信息操作模块,用户可以修改自己的各项信息。为了使操作过程更加人性化,现使用备忘录模式对系统进行改进,使得用户在进行了错误操作之后可以恢复到操作之前的状态。用户信息中包含账号、密码、电话

绘制UML类图
在这里插入图片描述
信息的初始化建立备忘录
备忘录的创建过程,就是通过构造函数的形式将一个类中的属性赋值给另外一个类里边的属性。实现原始数据的保存。在恢复原始数据时,通过创建另外一个类的对象,通过对象调用属性。然后赋值给这边类里的属性。

package com.zheng;

public class Originator { // 原始数据
    private String name; // 姓名
    private String pwd; // 密码
    private double num; // 电话

    //初始化客户信息
    public Originator(String name,String pwd,double num) {
        this.name=name;
        this.pwd=pwd;
        this.num=num;
    }

    //创建一个备忘录对象
    public Memento save() {
        return new Memento(this.name,this.pwd,this.num);//将原始数据的值保存在备忘录里边
    }

    //恢复状态
    public void restore(Memento memento) {
        this.name=memento.getName();//从备忘录里边取值给原始数据
        this.pwd=memento.getPwd();
        this.num=memento.getNum();
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public double getNum() {
        return num;
    }

    public void setNum(double num) {
        this.num = num;
    }

}

保存客户信息

package com.zheng;

public class Memento {
    private String name; // 姓名
    private String pwd; // 密码
    private double num; // 电话

    //初始化客户信息
    public Memento(String name,String pwd,double num) {
        this.name=name;
        this.pwd=pwd;
        this.num=num;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public double getNum() {
        return num;
    }

    public void setNum(double num) {
        this.num = num;
    }

}

调用备忘录里边的属性返回给保存的数据

package com.zheng;

public class MementoCaretaker {
    private Memento me;//备忘录对象

    public Memento getMemento() {
        return me;
    }
    public void setMemento(Memento me) {
        this.me=me;
    }

}

测试端

package com.zheng;

public class Client {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        MementoCaretaker mc=new MementoCaretaker();//管理者对象
        Originator cus1=new Originator("小明","12345",12345);//初始化客户1
        System.out.println("状态一:");
        display(cus1);
        mc.setMemento(cus1.save());//保存状态
        System.out.println("----------------------------------");
        System.out.println("状态二:");
        cus1.setPwd("22222");
        cus1.setNum(99999);
        display(cus1);
        System.out.println("----------------------------------");
        System.out.println("状态二回到状态一:");
        cus1.restore(mc.getMemento());//恢复状态
        display(cus1);

    }
    public static void display(Originator o) {
        System.out.println("账户:"+o.getName()+"\n密码:"+o.getPwd()+"\n电话:"+o.getNum());    
    }
}

运行截图
在这里插入图片描述

相关文章
|
6月前
|
数据安全/隐私保护
用户及组管理操作
用户及组管理操作
47 0
|
存储 缓存 NoSQL
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能 上
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能 上
137 0
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能   上
|
存储 NoSQL Java
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能 下
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能 下
161 0
社会你“小峰哥“用Java实现了管理员可以修改任意用户Session的功能   下
|
缓存 NoSQL Java
用户重复登录|学习笔记
快速学习用户重复登录
229 0
用户重复登录|学习笔记
|
开发者 Python
修改用户功能实现 | 学习笔记
快速学习 修改用户功能实现
110 0
|
Web App开发 JavaScript PHP
记录VisualSVNServer配置在线密码修改功能
VisualSVN Server使用的是64位版 查看对应的apache版本号是 2.2.32.这个版本需要使用php5.5以下的,且需要使用64位的php。 下载php 5.4 的64位版本。 php的下载地址:官网地址:http://windows.php.net/download/ http://windows.php.net/downloads/pecl/releases/ 官网从5.5开始才提供了64位的bin包下载。
3175 0
|
Java 网络安全
纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】(二)
为了更好地掌握SSH的用法,使用一个纳税服务系统来练手…..搭建SSH框架环境在上一篇已经详细地说明了。
164 0
纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】(二)
|
JavaScript Java 网络安全
纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】(三)
为了更好地掌握SSH的用法,使用一个纳税服务系统来练手…..搭建SSH框架环境在上一篇已经详细地说明了。
183 0
纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】(三)
|
XML Java 网络安全
纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】(一)
为了更好地掌握SSH的用法,使用一个纳税服务系统来练手…..搭建SSH框架环境在上一篇已经详细地说明了。
120 0
纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】(一)