| 
 | 
	
 
释义 
 
对某一对象的当前状态信息进行存档,可存档至内存也可持久化至磁盘。 
类图 
 
 
  
备忘录抽象类 
 
public abstract class MemoAbstract { 
 
    public String gameName; 
    public String archiveName; 
    public String gameState; 
 
    public MemoAbstract(String gameName, String archiveName, String gameState) { 
        this.gameName = gameName; 
        this.archiveName = archiveName; 
        this.gameState = gameState; 
    } 
 
    public String getGameName() { 
        return gameName; 
    } 
 
    public void setGameName(String gameName) { 
        this.gameName = gameName; 
    } 
 
    public String getArchiveName() { 
        return archiveName; 
    } 
 
    public void setArchiveName(String archiveName) { 
        this.archiveName = archiveName; 
    } 
 
    public String getGameState() { 
        return gameState; 
    } 
 
    public void setGameState(String gameState) { 
        this.gameState = gameState; 
    } 
}游戏抽象类 
 
public abstract class GameAbstract { 
 
    public String gameName; 
    public String archiveName; 
    public String gameState; 
 
    public MemoAbstract memo; 
 
    public GameAbstract(String gameName, String archiveName, String gameState) { 
        this.gameName = gameName; 
        this.archiveName = archiveName; 
        this.gameState = gameState; 
    } 
 
    public abstract void saveArchive(); 
    public abstract GameAbstract getArchive(String gameName); 
 
    public String getGameName() { 
        return gameName; 
    } 
 
    public void setGameName(String gameName) { 
        this.gameName = gameName; 
    } 
 
    public String getArchiveName() { 
        return archiveName; 
    } 
 
    public void setArchiveName(String archiveName) { 
        this.archiveName = archiveName; 
    } 
 
    public String getGameState() { 
        return gameState; 
    } 
 
    public void setGameState(String gameState) { 
        this.gameState = gameState; 
    } 
}备忘录子类 
 
public class GTAMemo extends MemoAbstract { 
 
    public GTAMemo(String gameName, String archiveName, String gameState) { 
        super(gameName, archiveName, gameState); 
    } 
}游戏子类 
 
public class GTAGame extends GameAbstract { 
 
    public GTAGame(String gameName, String archiveName, String gameState) { 
        super(gameName, archiveName, gameState); 
    } 
 
    @Override 
    public void saveArchive() { 
        this.memo = new GTAMemo( 
                this.getGameName(), 
                this.archiveName, 
                this.getGameState() 
        ); 
        MemoMaintainer.addMemoToMap(this.memo); 
    } 
 
    @Override 
    public GameAbstract getArchive(String name) { 
        this.memo = MemoMaintainer.getMemoFromMap(name); 
        return new GTAGame( 
                this.memo.getGameName(), 
                this.memo.getArchiveName(), 
                this.memo.getGameState() 
        ); 
    } 
 
    @Override 
    public String toString() { 
        return "GTAGame{" + 
                "gameName='" + gameName + '\'' + 
                ", archiveName='" + archiveName + '\'' + 
                ", gameState='" + gameState + '\'' + 
                '}'; 
    } 
}备忘录维护者 
 
public class MemoMaintainer { 
 
    private static Map<String, MemoAbstract> memoMap = new HashMap<>(); 
 
    public static void addMemoToMap(MemoAbstract memo) { 
        memoMap.put(memo.getGameName() + &#34;-&#34; + memo.getArchiveName(), memo); 
    } 
 
    public static MemoAbstract getMemoFromMap(String name) { 
        return memoMap.get(name); 
    } 
}测试代码 
 
public class TestMemo { 
 
    public static void main(String[] args) { 
        GTAGame gtaVc = new GTAGame(&#34;GTA_VC&#34;, &#34;archiveFile_1&#34;, &#34;侠盗猎车手-罪恶都市, 武器0, 血量100&#34;); 
        //存档1 
        gtaVc.saveArchive(); 
        System.out.println(&#34;The game msg is : &#34; + gtaVc); 
 
        gtaVc = new GTAGame(&#34;GTA_VC&#34;, &#34;archiveFile_2&#34; , &#34;侠盗猎车手-罪恶都市, 武器10, 血量90&#34;); 
        //存档2 
        gtaVc.saveArchive(); 
        System.out.println(&#34;The game msg is : &#34; + gtaVc); 
 
        gtaVc = new GTAGame(&#34;GTA_VC&#34;, &#34;archiveFile_3&#34;, &#34;侠盗猎车手-罪恶都市, 武器50, 血量20&#34;); 
        //存档3 
        gtaVc.saveArchive(); 
        System.out.println(&#34;The game msg is : &#34; + gtaVc); 
 
        //读取存档2 
        gtaVc = (GTAGame) gtaVc.getArchive(&#34;GTA_VC&#34; + &#34;-&#34; + &#34;archiveFile_2&#34;); 
        System.out.println(&#34;The archive game msg is : &#34; + gtaVc); 
 
    } 
}测试结果 
 
 
  
 
欢迎留言交流,欢迎转载,转载请注明出处即可,谢谢大家。。。 |   
 
 
 
 |