Java設計模式應用——備忘錄模式

來源:互聯網
上載者:User

標籤:show   over   管理器   manager   ==   str   mat   ossh   color   

備忘錄模式主要用於存檔。遊戲中我們打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設計模式應用——備忘錄模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.