コード例 #1
0
            static void Main(string[] args)
            {
                var originator = new Originator <Udemy>();
                var careTaker  = new CareTaker <Udemy>();

                originator.State = new Udemy
                {
                    DersNo  = "01",
                    DersAdi = "Gerekli Kurulumlar"
                };

                careTaker.Add(originator.SetState());

                originator.State = new Udemy
                {
                    DersNo  = "29",
                    DersAdi = "Çember Tespiti"
                };

                careTaker.Add(originator.SetState());

                originator.GetState(careTaker[0]);

                Console.WriteLine(originator.State);
            }
コード例 #2
0
        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();
        }
コード例 #3
0
    public void Main()
    {
        Originator originator = new Originator();
        CareTaker  careTaker  = new CareTaker();


        originator.SetState("State #1");
        originator.SetState("State #2");
        careTaker.Add(originator.SaveStateToMemento());
        originator.SetState("State #3");
        careTaker.Add(originator.SaveStateToMemento());
        originator.SetState("State #4");

        Console.WriteLine("Current State: " + originator.GetState());
        originator.GetStateFromMemento(careTaker.Get(0));
        Console.WriteLine("First saved State: " + originator.GetState());
        originator.GetStateFromMemento(careTaker.Get(1));
        Console.WriteLine("Second saved State: " + originator.GetState());
    }
コード例 #4
0
        public void SetNewState() //Sets a new state in the memento pattern
        {
            needsSaving = true;
            originator.SetState(lilypondText.Text);
            careTaker.Add(originator.StoreInMemento());
            savedMementos++;
            currentMemento++;

            reEvaluateButtons();
        }
コード例 #5
0
        public void Start()
        {
            var originator = new Originator();
            var careTaker  = new CareTaker();

            originator.SetState("State #1");
            originator.SetState("State #2");
            careTaker.Add(originator.SaveStateToMemento());

            originator.SetState("State #3");
            careTaker.Add(originator.SaveStateToMemento());

            originator.SetState("State #4");
            logger.Info($"Current State: {originator.State}.");

            originator.GetStateFromMemento(careTaker.Get(0));
            logger.Info($"First Saved State: {originator.State}.");
            originator.GetStateFromMemento(careTaker.Get(1));
            logger.Info($"Second Saved State: {originator.State}.");
        }
コード例 #6
0
        //Memento
        public void Memento()
        {
            Pessoa    pessoa1 = new Pessoa(1, "Maria");
            CareTaker care    = new CareTaker();

            Console.WriteLine("1:" + pessoa1);
            care.Add(pessoa1);
            pessoa1.setPessoa(2, "Marcus");
            Console.WriteLine("2:" + pessoa1);
            care.Recovery(pessoa1, 0);
            Console.WriteLine("3:" + pessoa1);
        }
コード例 #7
0
        static void Main(string[] args)
        {
            Originator originator = new Originator();
            CareTaker  careTaker  = new CareTaker();

            originator.State = "State #1";
            originator.State = "State #2";
            careTaker.Add(originator.saveStateToMemento());


            originator.State = "State #3";
            careTaker.Add(originator.saveStateToMemento());
            originator.State = "State #4";

            Console.WriteLine("Current State: " + originator.State);
            originator.GetStateFromMemento(careTaker.Get(0));
            Console.WriteLine("First saved State: " + originator.State);
            originator.GetStateFromMemento(careTaker.Get(1));
            Console.WriteLine("Second saved State: " + originator.State);
            Console.ReadKey();
        }
コード例 #8
0
        static void Main(string[] args)
        {
            Stage[] stages = new[]
            {
                new Stage(Stage1),
                new Stage(Stage2),
                new Stage(Stage3),
                new Stage(Stage4),
                new Stage(Stage5),
            };


            Originator originator = new Originator();
            CareTaker  careTaker  = new CareTaker();

            originator.SetStage(0);

            while (true)
            {
                int curStage = originator.GetStage();

                if (curStage >= stages.Length)
                {
                    break;
                }

                Console.WriteLine("-------------当前关卡 " + (curStage + 1) + "-------------");

                careTaker.Add(originator.SaveStateToMemento());

                bool isStageWin = stages[curStage].RunStage(new Random().Next(1, 6));

                if (isStageWin)
                {
                    Console.WriteLine("恭喜获胜,即将进入下一关");
                    originator.SetStage(++curStage);
                }
                else
                {
                    Console.WriteLine("挑战失败,即将重新挑战");
                    curStage = careTaker.Get().GetStage();
                    originator.SetStage(curStage);
                }

                Console.WriteLine("------------------------------------");

                Thread.Sleep(1000);
            }
            Console.WriteLine("恭喜通过所有关卡");
        }
コード例 #9
0
        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");
        }
コード例 #10
0
ファイル: Player.cs プロジェクト: gGvidas/bomberman
 public void SaveItem()
 {
     originator.SetState(item);
     careTaker.Add(originator.SaveStateToMemento());
 }
コード例 #11
0
        static void Main(string[] args)
        {
            /**
             * ITERATOR
             **/

            ConcreteAggregate collection = new ConcreteAggregate();

            Iterator.Iterator iterator = collection.createIterator();

            //use to iterator to go through the collection
            while (!iterator.isDone())
            {
                Console.WriteLine(iterator.Next().ToString());
            }

            /**
             * OBSERVER
             **/

            Subject subject = new ConcreteSubject(SubjectState.Red);

            subject.Attach(new ConcreteObserver());
            subject.Attach(new ConcreteObserver());
            subject.Attach(new ConcreteObserver());

            ((ConcreteSubject)subject).SubjectState = SubjectState.Blue;

            /**
             * DECORATOR
             **/

            //we create a class with a base function
            Component component = new ConcreteComponent();

            //we create the function we want the add to the first class
            Decorator.Decorator decorator = new ConcreteDecorator();

            //the decorator gets the functionality of the class we want to extend
            decorator.SetBaseFuntionality(component);

            //both ops are called
            decorator.Operation();

            /**
             * COMMAND
             **/

            Command.Command command = new ConcreteCommand(new Receiver());

            //create an invoker which in turn calls the command which IN TURN calls the receiver
            Invoker invoker = new Invoker();

            invoker.SetCommand(command);
            invoker.ExecuteCommand();

            /**
             * COMPOSITE
             **/

            //instanciate differents persons
            Composite.Component component1 = new Composite.Composite("Bob");
            Composite.Component component2 = new Composite.Composite("Patrick");
            Composite.Component component3 = new Composite.Composite("Johny");
            Composite.Component component4 = new Composite.Composite("Pierre");

            //affects differents persons to a superior
            component1.Add(component2);
            component2.Add(component3);
            component2.Add(component4);

            //default method for every objects in the tree
            component1.Operation();

            /**
             * MEMENTO
             **/

            Originator originator = new Originator();
            CareTaker  careTaker  = new CareTaker();

            //create a couple of states
            originator.State = "state1";
            originator.State = "state2";
            //save at some point
            careTaker.Add(originator.SaveToMemento());
            originator.State = "state3";

            //restore state at the time of the save
            originator.RestoreStateFromMemento(careTaker.Get(0));

            Console.WriteLine(originator.State);

            Console.ReadKey();
        }
コード例 #12
0
 public void SetState(SavedState _savedState)// string[] _imgList, TaskState _stateTask)
 {
     m_originator.SetState(_savedState);
     m_carTaker.Add(m_originator.SaveToMemento());
 }
コード例 #13
0
        // Singleton    done
        // Factory      done
        // Strategy     done
        // Observer     done

        // Adapter      done
        // Decorator    done
        // Facade       done
        // Command      done

        // Template Method - zaidimo temos
        // State - zaidimo busena
        // Proxy -
        // Iterator, Composite, Flyweight

        // Chain of Responsibility
        // Null Object - score null
        // Memento - restart/resume game
        // Visitor - when enemies die, they visit visitor
        // Interpreter - custom game mod



        public Form1()
        {
            InitializeComponent();
            instance = this;

            //Singleton and Adapter
            logger.LogMessage("Adapter Works!");
            guiLogger.LogMessage("Gui Logger Works!");

            pacman = new Classes.Pacman(false);
            MoveDown  moveDown  = new MoveDown(pacman);
            MoveUp    moveUp    = new MoveUp(pacman);
            MoveLeft  moveLeft  = new MoveLeft(pacman);
            MoveRight moveRight = new MoveRight(pacman);

            //Command
            pacman.Move(moveDown);
            pacman.Move(moveUp);
            pacman.Move(moveLeft);
            pacman.Move(moveRight);

            //Strategy
            Enemy enemy = new Enemy(new AiAmbusher());

            enemy.SelectStrategy();
            enemy.strategy = new AiRandom();
            enemy.SelectStrategy();

            //Observer
            pacman.Attach(enemy);
            pacman.State = true;

            //Abstract factory
            AbstractFactory candyFactory = new CandyFactory();
            ICandy          candy1       = candyFactory.GetCandy("small");

            candy1.CreateCandy();

            ICandy candy2 = candyFactory.GetCandy("big");

            candy2.CreateCandy();

            ICandy candy3 = candyFactory.GetCandy("cherry");

            candy3.CreateCandy();

            ICandy candy4 = candyFactory.GetCandy("BANANA");

            candy4.CreateCandy();

            AbstractFactory colorFactory = new ColorFactory();
            IColor          color1       = colorFactory.GetColor("yellow");

            color1.CreateColor();

            IColor color2 = colorFactory.GetColor("red");

            color2.CreateColor();

            //Facade
            FoodFacade food = new FoodFacade();

            food.CreateRedCherry();
            food.CreateRedSmall();
            food.CreateYellowBanana();
            food.CreateYellowBig();

            //Decorator with Template Method
            pacman.weapon = new Gun();
            Debug.WriteLine(pacman.weapon.Shoot());
            pacman.weapon = new Cannon(pacman.weapon);
            Debug.WriteLine(pacman.weapon.Shoot());
            pacman.weapon = new SpeedTrap(pacman.weapon);
            Debug.WriteLine(pacman.weapon.Shoot());

            // State
            // Changes game state from resumed to paused and vice versa
            StateContext stateContext = new StateContext();
            StateResumed stateResumed = new StateResumed();
            StatePaused  statePaused  = new StatePaused();

            stateResumed.Handle(stateContext);
            Console.WriteLine(stateContext.GetState().GetString());
            statePaused.Handle(stateContext);
            Console.WriteLine(stateContext.GetState().GetString());

            // Proxy
            // Loads background image for gameboard
            IBackgroundImage image = new ProxyBackgroundImage("Background1.jpg");

            image.Display();
            Console.WriteLine("");
            // Image will not be loaded from disk again
            image.Display();

            // Flyweight
            // Pattern used to generate obstacles based on their length

            for (int i = 0; i < 8; i++)
            {
                //Creating duplicate objects
                Obstacle obs = ObstacleFactory.GetObstacle(i < 4 ? i : i / 2);
                obs.SetX(4);
                obs.SetY(4);
                obs.SetRotation(0);
                obs.Draw();
            }

            // Chain of responsibility
            // For handling scores
            AllScoresHandler handler1 = new NullObject();
            AllScoresHandler handler2 = new BonusHandler();
            AllScoresHandler handler3 = new PointsHandler();

            handler1.SetNextHandler(handler2);
            handler2.SetNextHandler(handler3);
            int[] points = { 0, 15, 5, 10, -5, 16, 18, 0, 0, 13, 1, 2, 3 };
            foreach (int point in points)
            {
                handler1.HandleScore(point);
            }
            Console.WriteLine("Final points: " + Highscore.Instance.score);

            // Mediator
            // Implemented chatroom
            Chatroom chatroom = new Chatroom();

            Participant player     = new Participant("Player");
            Participant spectator1 = new Participant("Spectator1");
            Participant spectator2 = new Participant("Spectator2");

            chatroom.Register(player);
            chatroom.Register(spectator1);
            chatroom.Register(spectator2);

            player.Send("Spectator1", "Hello, spectator!");
            spectator1.Send("Player", "Hello, player!");
            spectator2.Send("Player", "Hey, don't forget me!");

            // Memento
            // Saving player score for later use
            CareTaker careTaker = new CareTaker();

            careTaker.Add(Highscore.Instance.SetMemento());
            Console.WriteLine("Memento saved state: " + careTaker.Get(0).GetScore());
            Highscore.Instance.score = 2222;
            careTaker.Add(Highscore.Instance.SetMemento());
            Console.WriteLine("Memento saved state: " + careTaker.Get(1).GetScore());
            Console.WriteLine("Restoring to first memento.");
            Highscore.Instance.SetMemento(careTaker.Get(0));
            Console.WriteLine("Restored score is: " + Highscore.Instance.score);

            // Interpreter
            // Eating yellow banana will binary shift your score to the left and add 10 points to the result
            Console.WriteLine("Score before interpreter: " + Highscore.Instance.score);
            Counter originalCounter = new ConcreteCounter(Highscore.Instance.score);
            Counter bananaCounter   = new ConcreteCounter(10);
            Counter counter         = new ShiftCounter(bananaCounter, originalCounter);

            Highscore.Instance.score = counter.Count();
            Console.WriteLine("Score before interpreter: " + Highscore.Instance.score);
        }
コード例 #14
0
 private void HistoryView_SelectedChange(object sender, PathEventArgs e)
 {
     fileSystem.Selected = fileSystem.FindDirectory(e.Path);
     careTaker.Add(fileSystem.Save());
     SetUpMove(careTaker.HasPrevious, careTaker.HasNext, GetParent(fileSystem.Selected.Path) != null);
 }