首页 > 编程语言 > 详细

Java设计模式应用——备忘录模式

时间:2017-06-09 23:14:17      阅读:270      评论:0      收藏:0      [点我收藏+]

备忘录模式主要用于存档。游戏中我们打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();
    }
}

 

Java设计模式应用——备忘录模式

原文:http://www.cnblogs.com/coshaho/p/6974032.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!