private void Start() { CareTaker careTaker = new CareTaker(); Originator originator = new Originator(); originator.SetState("state1"); originator.ShowState(); Memento memento = originator.CreateMemento(); careTaker.AddMemento("v1.0", memento); originator.SetState("state2"); originator.ShowState(); memento = originator.CreateMemento(); careTaker.AddMemento("v2.0", memento); originator.SetState("state3"); originator.ShowState(); memento = originator.CreateMemento(); careTaker.AddMemento("v3.0", memento); originator.RecoverFromMemento(careTaker.GetMemento("v1.0")); originator.ShowState(); originator.RecoverFromMemento(careTaker.GetMemento("v2.0")); originator.ShowState(); originator.RecoverFromMemento(careTaker.GetMemento("v3.0")); originator.ShowState(); }
private void Start() { //Originator originator = new Originator(); //originator.SetState("State1"); //originator.ShowState(); //Memento memento = originator.CreateMemento(); //创建快照 //originator.SetState("State2"); //originator.ShowState(); //originator.SetMemento(memento); //originator.ShowState(); CareTaker careTaker = new CareTaker(); Originator originator = new Originator(); originator.SetState("state1"); originator.ShowState(); careTaker.AddMemento("v1.0", originator.CreateMemento()); originator.SetState("state2"); originator.ShowState(); careTaker.AddMemento("v2.0", originator.CreateMemento()); originator.SetState("state3"); originator.ShowState(); careTaker.AddMemento("v3.0", originator.CreateMemento()); originator.SetMemento(careTaker.GetMemento("v2.0")); originator.ShowState(); originator.SetMemento(careTaker.GetMemento("v1.0")); originator.ShowState(); }
static void Main(string[] args) { var p = new Persona(); p.Nombre = "Pepe"; caretaker.Add(p.saveToMemento()); p.Nombre = "Pepe1"; caretaker.Add(p.saveToMemento()); p.Nombre = "Pepe2"; caretaker.Add(p.saveToMemento()); Memento.Clases.Memento m1 = caretaker.GetMemento(0); Console.WriteLine("Viendo memento 1: " + m1.Estado); Console.WriteLine("Viendo memento 2: " + caretaker.GetMemento(1).Estado); Console.WriteLine("Viendo memento 3: " + caretaker.GetMemento(2).Estado); p.restoreToMemento(m1); p.restoreToMemento(caretaker.GetMemento(1)); Console.ReadKey(); }
private void Start() { /* * Originator originator = new Originator(); * originator.SetState("Test1"); * originator.ShowState(); * * Memento memento1 = originator.CreateMemento(); * * originator.SetState("Test2"); * originator.ShowState(); * * originator.SetMemento(memento1); */ CareTaker careTaker = new CareTaker(); Originator originator = new Originator(); originator.SetState("Test1"); originator.ShowState(); careTaker.AddMemento("V1.0", originator.CreateMemento()); originator.SetState("Test2"); originator.ShowState(); careTaker.AddMemento("V2.0", originator.CreateMemento()); originator.SetState("Test3"); originator.ShowState(); careTaker.AddMemento("V3.0", originator.CreateMemento()); originator.SetMemento(careTaker.GetMemento("V2.0")); originator.ShowState(); }
public static void Main_Memento() { var originator = new Originator(); var taker = new CareTaker(); taker.SetMemento(originator.SaveMemento()); originator.RestoreMemento(taker.GetMemento()); Console.ReadLine(); }
public static void PlayerPosition(object sender, KeyEventArgs e, PlayerObject playerObject, CareTaker careTaker) { if (e.Key == Key.P) { //save state careTaker.AddMemento(playerObject.SaveStateToMemento()); } if (e.Key == Key.O) { //retrieve state playerObject.RestoreStateFromMemento(careTaker.GetMemento()); } }
private void Start() { //Originator originator = new Originator(); //originator.SetState("State1"); //originator.ShowState(); //Memento memento = originator.CreatMemento();//创建快照 //originator.SetState("State2"); //originator.ShowState(); //originator.SetMemento(memento); //originator.ShowState(); CareTaker careTaker = new CareTaker(); //多备忘录保存管理器 Originator originator = new Originator(); //发起者(内部有需要保存的类成员) originator.SetState("State1"); //状态1 originator.ShowState(); careTaker.AddMemento("v1.0", originator.CreatMemento()); originator.SetState("State2");//状态2 originator.ShowState(); careTaker.AddMemento("v2.0", originator.CreatMemento()); originator.SetState("State3");//状态3 originator.ShowState(); careTaker.AddMemento("v3.0", originator.CreatMemento()); originator.SetMemento(careTaker.GetMemento("v2.0"));//回到版本2 originator.ShowState(); originator.SetMemento(careTaker.GetMemento("v1.0"));//回到版本1 originator.ShowState(); }
public void TestMemento() { var careTaker = new CareTaker <string>(); var originator = new Originator <string>(); originator.State = "State 1"; careTaker.AddMemento(originator.SaveToMemento()); originator.State = "State 2"; careTaker.AddMemento(originator.SaveToMemento()); originator.State = "State 3"; originator.RestoreFromMemento(careTaker.GetMemento(1)); Assert.That(originator.State, Is.EqualTo("State 2")); }
private void Start() { CareTaker careTaker = new CareTaker(); Originator originator = new Originator(); originator.SetState("State1"); originator.ShowState(); careTaker.AddMemento("v1.0", originator.CreateMemento()); originator.SetState("State2"); originator.ShowState(); careTaker.AddMemento("v2.0", originator.CreateMemento()); Memento memento = careTaker.GetMemento("v1.0"); originator.SetMemento(memento); originator.ShowState(); }
public static void TestMemento() { Console.WriteLine("----------------------Memento----------------------"); CareTaker careTaker = new CareTaker(); User user1 = new User("Alice", "+37064586339", new List <string> { "Dancing", "Swimming" }); User user2 = new User("Bob", "+37074185239", new List <string> { "Boxing" }); careTaker.Add(user1.CreateMemento()); user1.UpdateState(new List <string> { "Sports", "Fishing" }); UserMemento memento = careTaker.GetMemento(); user1.GetMemento(memento); user2.GetMemento(memento); Console.WriteLine("---------------------------------------------------\n"); }
private void timer1_Tick(object sender, EventArgs e) { if (playerObject == null) { return; } var moved = false; if (PlayerSettings.canMove) { var calc = PlayerSettings.minPlayerSpeed * (PlayerSettings.maxPlayerSize / playerObject.size); var speed = calc > PlayerSettings.maxPlayerSpeed ? PlayerSettings.maxPlayerSpeed : calc; var mover = new PlayerMover(); if (PlayerSettings.movingUp) { var newCoord = playerObject.yCoord - speed; if (newCoord < 0) { return; } ICommand moveUp = new MoveUp(playerObject, newCoord); mover.performMove(moveUp); moved = true; } if (PlayerSettings.movingDown) { var newCoord = playerObject.yCoord + speed; if (newCoord > maxY) { return; } ICommand moveDown = new MoveDown(playerObject, newCoord); mover.performMove(moveDown); moved = true; } if (PlayerSettings.movingLeft) { var newCoord = playerObject.xCoord - speed; if (newCoord < 0) { return; } ICommand moveLeft = new MoveLeft(playerObject, newCoord); mover.performMove(moveLeft); moved = true; } if (PlayerSettings.movingRight) { var newCoord = playerObject.xCoord + speed; if (newCoord > maxX) { return; } ICommand moveRight = new MoveRight(playerObject, newCoord); mover.performMove(moveRight); moved = true; } //Create memento only if moved. if (moved) { playerObject.SetPosition(new TwoDimensionalPosition { X = playerObject.xCoord, Y = playerObject.yCoord }); playerPositions.AddMemento(playerObject.CreateMemento()); } } else { timer--; savedPositionCount--; var newPos = playerPositions.GetMemento(savedPositionCount); if (newPos.GetSavedPosition(playerObject.Uuid) != null) { playerObject.MoveX(newPos.GetSavedPosition(playerObject.Uuid).X); moved = true; } if (newPos.GetSavedPosition(playerObject.Uuid) != null) { playerObject.MoveY(newPos.GetSavedPosition(playerObject.Uuid).Y); moved = true; } //Stop moving back either when timer ends or when out of saved positions if (timer <= 0 || savedPositionCount <= 0) { PlayerSettings.canMove = true; } } //Send player locations to server. if (moved) { var content = new Dictionary <string, string> { { "playerUuid", currentPlayer.Uuid }, { "xCoord", playerObject.objectControl.Location.X.ToString() }, { "yCoord", playerObject.objectControl.Location.Y.ToString() } }; updater.PostData("api/player/move", Processor.PostDataType.Post, content); } CheckForCollision(); }