设计模式-》备忘录模式
侠盗飞车存档
- 钱
- 人物坐标
- 目前任务关卡
- 犯罪星级
public class GameData
{
public double Money { get; set; }
public int TaskLevel { get; set; }
public int X { get; set; }
public int Y { get; set; }
public GameData(double money, int taskLevel, int x, int y, int fanZuiLevel)
{
Money = money;
TaskLevel = taskLevel;
X = x;
Y = y;
FanZuiLevel = fanZuiLevel;
}
public int FanZuiLevel { get; set; }
}
public class GameWord
{
public GameWord(GameData gameData)
{
GameData = gameData;
}
public GameMemento SaveState()
{
return new GameMemento(GameData);
}
public void ShowDisplay()
{
Console.WriteLine($"坐标:{GameData.X}:{GameData.Y},钱:{GameData.Money}");
}
public void Die()
{
this.GameData = null;
}
public void RecoveryState(GameMemento gameData)
{
GameData = gameData.GameData;
}
public GameData GameData { get; set; }
}
public class GameMemento
{
public GameMemento(GameData gameData)
{
GameData = gameData;
}
public GameData GameData { get; set; }
}
public class GameCaretaker
{
public GameMemento GameMemento { get; set; }
public GameMemento GetGameMemento => GameMemento;
public void SetGameMemento(GameMemento gameMemento)
{
GameMemento = gameMemento;
}
}
class Program
{
static void Main(string[] args)
{
GameData gameData = new GameData(100, 1, 100, 20, 2);
GameWord gameWord = new GameWord(gameData);
gameWord.ShowDisplay();
GameCaretaker gameCaretaker = new GameCaretaker();
gameCaretaker.SetGameMemento(gameWord.SaveState());
gameWord.Die();
gameWord.RecoveryState(gameCaretaker.GetGameMemento);
gameWord.ShowDisplay();
Console.WriteLine("Hello World!");
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步