备忘录模式

2021-05-26  本文已影响0人  金煜博

什么是备忘录模式

将对象的内部属性的原状态保存到外部对象中,之后对象属性状态改变了也可以恢复到原来保存的状态

示例图

图片.png

示例场景

模拟存档游戏关卡

示例代码

1.创建File游戏存档类
游戏存档类对关卡属性进行存档

public class File {
    private String level;

    public File(String level) {
        this.level = level;
    }

    public String getLevel() {
        return level;
    }

    public void setLevel(String level) {
        this.level = level;
    }
}

2.创建GameLevel游戏关卡类
游戏关卡类用于展示存档 获取关卡存档 存取关卡存档

public class GameLevel {
    private String level;

    //存取当前关卡
    public File currentLevel(){
        return new File(level);
    }


    //获取存档
    public void getFile(File file){
        this.level =  file.getLevel();
    }

    //显示关卡
    public void showLevel(){
        System.out.println("当前关卡为:"+level);
    }
    public String getLevel() {
        return level;
    }

    public void setLevel(String level) {
        this.level = level;
    }
}

3.创建FileCaretaker游戏存档管理者
管理者用于存取存档对象信息

public class FileCaretaker {
    private File file;

    public File getFile() {
        return file;
    }

    public void setFile(File file) {
        this.file = file;
    }
}

4.创建client启动类

public class Client {
    public static void main(String[] args) {
        GameLevel gameLevel = new GameLevel();
        gameLevel.setLevel("第一关");
        gameLevel.showLevel();

        //创建存档管理者
        FileCaretaker fileCaretaker = new FileCaretaker();
        //存档管理者获取当前存档信息
        fileCaretaker.setFile(gameLevel.currentLevel());

        //重新设置关卡
        gameLevel.setLevel("第三关");
        gameLevel.showLevel();

        //获取存档信息
        gameLevel.getFile(fileCaretaker.getFile());
        gameLevel.showLevel();
    }
}

5.运行结果


图片.png
上一篇下一篇

猜你喜欢

热点阅读