设计模式-备忘录模式-java-中文版

码上见分晓!
中文版本的设计模式详解,案例中的代码尽量使用了中文.
以游戏和生活中较好理解的场景讲解设计模式的实际用法,便于理解吸收,让设计模式的学习不再困难!!!
更多设计模式欢迎来到我的开源项目设计模式中文版

https://gitee.com/nightrunner/chinese-version-of-design-patterns

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;

/**
 * 备忘录模式可以实现存档
 */
public class 备忘录模式主程序 {
    public static void main(String[] args) {
        List<存档> 存档集合 = new ArrayList<>();
        恶魔猎手 恶魔猎手 = new 恶魔猎手("伊利丹");
        恶魔猎手.显示状态();
        存档集合.add(恶魔猎手.获取存档());

        恶魔猎手.当前地点 = "暴风城";
        恶魔猎手.血量 = 10;
        恶魔猎手.蓝量 = 0;
        恶魔猎手.显示状态();
        存档集合.add(恶魔猎手.获取存档());

        恶魔猎手.血量 = 0;
        恶魔猎手.蓝量 = 0;
        恶魔猎手.显示状态();

        int 存档下标 = -1;
        do {
            Scanner sc = new Scanner(System.in);
            for (int i = 0; i < 存档集合.size(); i++) {
                System.out.println(i + ":" + 存档集合.get(i).摘要);
            }
            System.out.print("请输入要恢复存档的数字:");

            int 下标 = 存档下标 = sc.nextInt();
            if (下标 < 0 || 下标 > (存档集合.size() - 1)) {
                System.out.println("输入错误,请重新输入");
            } else {
                break;
            }
        } while (true);

        恶魔猎手.恢复存档(存档集合.get(存档下标));
        恶魔猎手.显示状态();
    }
}

interface 角色 {
    存档 获取存档();

    void 恢复存档(存档 存档);

    void 显示状态();
}

abstract class 角色默认抽象实现 implements 角色 {
    String 当前地点 = "玛顿";

    Integer 血量 = 200;

    Integer 蓝量 = 300;

    final String 姓名;

    public 角色默认抽象实现(String 姓名) {
        this.姓名 = 姓名;
    }

    @Override
    public 存档 获取存档() {
        存档 存档 = new 存档();
        存档.地点 = 当前地点;
        存档.血量 = 血量;
        存档.蓝量 = 蓝量;
        存档.时间 = new Date();
        存档.摘要 = this.toString();
        System.out.println(this.getClass().getSimpleName() + "保存存档:" + 存档);
        return 存档;
    }

    public void 恢复存档(存档 存档) {
        this.血量 = 存档.血量;
        this.蓝量 = 存档.蓝量;
        this.当前地点 = 存档.地点;
        System.out.println(this.getClass().getSimpleName() + "恢复存档:" + 存档);
    }

    @Override
    public String toString() {
        return this.getClass().getSimpleName() + ":" + 姓名 + "{" +
                "当前地点=" + 当前地点 +
                ", 血量=" + 血量 +
                ", 蓝量=" + 蓝量 +
                '}';
    }

    @Override
    public void 显示状态() {
        if (血量 < 1) {
            System.out.println(this.getClass().getSimpleName() + ":" + 姓名 + "挂了");
        } else {
            System.out.println(this);
        }
    }
}

class 恶魔猎手 extends 角色默认抽象实现 {
    public 恶魔猎手(String 昵称) {
        super(昵称);
    }
}

interface 备忘录 {
}

class 存档 implements 备忘录 {
    public 存档() {
    }

    Date 时间;

    String 摘要;

    String 地点;

    Integer 血量;

    Integer 蓝量;

    @Override
    public String toString() {
        return "存档{" +
                "时间=" + 时间 +
                ", 摘要='" + 摘要 + '\'' +
                ", 地点=" + 地点 +
                ", 血量=" + 血量 +
                ", 蓝量=" + 蓝量 +
                '}';
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值