예제 #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("STRATEGY DESIGN PATTERN\n");

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

            //moves
            IJumpBehaviour shortJump   = new ShortJump();
            IJumpBehaviour longJump    = new LongJump();
            IKickBehaviour tornadoKick = new TornadoKick();

            //create fighter
            Fighter sango = new Sango(tornadoKick, shortJump);

            sango.Display();

            //fight
            sango.Punch();
            sango.Kick();
            sango.Jump();

            //change behaviour dynamically(runtime)
            sango.SetJumpBehaviour(longJump);
            sango.Jump();
        }
예제 #2
0
        public void Strategy_pattern_test()
        {
            IJumpBehavior highjump    = new HighJump();
            IJumpBehavior longjump    = new LongJump();
            IKickBehavior tornadokick = new TornadoKick();

            // Make a fighter with desired behaviors
            Fighter ryu = new Ryu(tornadokick, longjump);

            // Test behaviors
            string jumpText  = ryu.jump();
            string kickText  = ryu.kick();
            string punchText = ryu.punch();

            Assert.AreEqual("Long Jump", jumpText);
            Assert.AreEqual("Tornado Kick", kickText);
            Assert.AreEqual("Default punch", punchText);

            // Change behavior dynamically (algorithms are
            // interchangeable)
            ryu.setjump(highjump);
            ryu.jump();

            Assert.AreEqual("Long Jump", jumpText);
        }