|
释义
对某一对象的当前状态信息进行存档,可存档至内存也可持久化至磁盘。
类图

备忘录抽象类
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);
}
}测试结果

欢迎留言交流,欢迎转载,转载请注明出处即可,谢谢大家。。。 |
|