zoukankan      html  css  js  c++  java
  • Java设计模式应用——备忘录模式

    备忘录模式主要用于存档。游戏中我们打boss前总会存档,如果打boss失败,则读取存档,重新挑战boss。

    可以看出来,备忘录模式一般包括如下数据结构

    1、 存档文件:用于恢复备份场景的必要数据;

    2、 存档管理器:用于管理存档,包括存档的读写与展示;

    3、 被存档的对象。

    下面以射击游戏的存档来举例:

    1、 射击选手

    package com.coshaho.learn.memorandum;
    
    // 射击手
    public class Shooter 
    {
        // 血量
        private int blood = 100;
        
        // 子弹数量
        private int bullet = 100;
        
        // 射击
        public void shoot()
        {
            bullet = bullet - (int) (Math.random()*30);
            if(0 > bullet)
            {
                bullet = 0;
            }
            bossHurt();
        }
        
        // boss伤害
        private void bossHurt()
        {
            blood = blood - (int) (Math.random()*25);
            if(0 > blood)
            {
                blood = 0;
            }
        }
        
        public void show()
        {
            System.out.println("Shooter blood is " + blood + ", bullet is " + bullet + '.');
        }
    
        // 保存
        public Memorandum save()
        {
            return new Memorandum(blood, bullet);
        }
        
        // 载入
        public void recovery(Memorandum memory)
        {
            if(null == memory)
            {
                return;
            }
            blood = memory.getBlood();
            bullet = memory.getBullet();
        }
    }

    2、 存档文件

    package com.coshaho.learn.memorandum;
    
    // 存档
    public class Memorandum 
    {
        private int blood;
        
        private int bullet;
    
        public Memorandum(int blood, int bullet)
        {
            this.blood = blood;
            this.bullet = bullet;
        }
    
        public int getBlood() 
        {
            return blood;
        }
    
        public int getBullet() 
        {
            return bullet;
        }
    }

    3、 存档管理器

    package com.coshaho.learn.memorandum;
    
    // 存档管理器
    public class MemorandumManager 
    {
        private Memorandum memory;
    
        public Memorandum getMemory() 
        {
            return memory;
        }
    
        public void setMemory(Memorandum memory) 
        {
            this.memory = memory;
        }
    }

    4、 测试代码

    package com.coshaho.learn.memorandum;
    
    public class MemorandumTest 
    {
        public static void main(String[] args)
        {
            MemorandumManager mmemoryManager = new MemorandumManager();
            Shooter shooter = new Shooter();
            shooter.shoot();
            shooter.show();
            mmemoryManager.setMemory(shooter.save());
            
            shooter.shoot();
            shooter.show();
            shooter.recovery(mmemoryManager.getMemory());
            
            shooter.show();
        }
    }
  • 相关阅读:
    图片显示、PNG透明
    表格边框
    PowerDesigner 16安装注意事项
    web.config中httpRunTime的属性(转)
    禅道程序员的10条原则转载为了不忘
    MS SQL 小时分钟加减 运算 摘
    CASE WHEN THEN 小结
    Java集合框架总结(2)——Set接口的使用
    Java集合框架的知识总结(1)
    Hadoop1.2.0开发笔记(六)
  • 原文地址:https://www.cnblogs.com/coshaho/p/6974032.html
Copyright © 2011-2022 走看看