Beispiel #1
0
        /*
         * Sem violar encapsulamento, captura e externaliza um
         * estado de objeto interno e entao este objeto pode ser restaurado
         * para um estado anterior
         *
         *  Quando usar:
         *   - um Snapshot de um objeto deve ser salvo para ser restaurado depois
         *   - uma interface direta para obter um estado iria expor detalhes
         *      da implementação e quebrar o encapsulamento
         */
        static void Main(string[] args)
        {
            Originator originator = new Originator();
            CareTaker  caretaker  = new CareTaker();

            originator.State = "#1";
            originator.State = "#2";
            caretaker.AddMement(originator.SaveState());

            originator.State = "#3";
            caretaker.AddMement(originator.SaveState());

            originator.State = "#4";
            Console.WriteLine("Actual State: " + originator.State);

            originator.GetStateFromMemento(caretaker.Get(1));
            Console.WriteLine("Actual State: " + originator.State);

            originator.GetStateFromMemento(caretaker.Get(0));
            Console.WriteLine("Actual State: " + originator.State);

            Console.ReadKey();
        }