zoukankan      html  css  js  c++  java
  • 用C#改写Head First Design PatternsStrategy策略模式(原创)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace Strategy
    {
        /// <summary>
        /// 具有飞行行为
        /// </summary>
        public interface FlyBehavior
        {
            void fly();
        }

        /// <summary>
        /// 具有吃饭行为
        /// </summary>
        public interface EatBehavior
        {
            void eat();
        }

        /// <summary>
        /// 用翅膀飞
        /// </summary>
        public class FlyWithWings: FlyBehavior
        {


            #region FlyBehavior 成员

            void FlyBehavior.fly()
            {
                System.Console.WriteLine("用翅膀飞");
            }

            #endregion
        }

        /// <summary>
        /// 用翅膀飞
        /// </summary>
        public class FlyNoWay : FlyBehavior
        {


            #region FlyBehavior 成员

            void FlyBehavior.fly()
            {
                System.Console.WriteLine("飞不了");
            }

            #endregion
        }


        public class EatMeat : EatBehavior
        {

            #region EatBehavior 成员

            void EatBehavior.eat()
            {
                System.Console.WriteLine("吃肉");
            }

            #endregion
        }

        public class EatAll : EatBehavior
        {

            #region EatBehavior 成员

            void EatBehavior.eat()
            {
                System.Console.WriteLine("什么都吃,杂食");
            }

            #endregion
        }
    }

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace Strategy
    {
        class AnimalClass
        {
            public abstract class Animal
            {
                protected FlyBehavior fb;
                protected EatBehavior eb;
                public  string name;

                public Animal() { }

                public void Fly()
                {
                    fb.fly();
                }

                public void Eat()
                {
                    eb.eat();
                }
           
            }

            public class Tiger : Animal
            {
                public Tiger()
                {
                    fb=  new FlyNoWay();
                    eb = new EatMeat();
                    name = "老虎";
                }
            }

            public class Eagle : Animal
            {

                public Eagle()
                {
                    fb = new FlyWithWings();
                    eb = new EatMeat();
                    name = "老鹰";
                }
            }

            public class Human : Animal
            {
                public Human()
                {
                    fb = new FlyNoWay();
                    eb = new EatAll();
                    name = "人类";
                }
            }
        }
    }

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace Strategy
    {
        class Program
        {
            static void Main(string[] args)
            {
                Strategy.AnimalClass.Tiger t = new AnimalClass.Tiger();
                System.Console.WriteLine(t.name);
                t.Eat();
                t.Fly();
                Strategy.AnimalClass.Eagle e = new AnimalClass.Eagle();
                System.Console.WriteLine(e.name);
                e.Eat();
                e.Fly();
                Strategy.AnimalClass.Human h = new AnimalClass.Human();
                System.Console.WriteLine(h.name);
                h.Eat();
                h.Fly();
                System.Console.ReadLine();
            }
        }
    }

    关于作者: 王昕(QQ:475660) 在广州工作生活30余年。十多年开发经验,在Java、即时通讯、NoSQL、BPM、大数据等领域较有经验。
    目前维护的开源产品:https://gitee.com/475660
  • 相关阅读:
    《世界是数字的》
    IT小小鸟读书笔记
    Codeforces Round #665 Div.2 (CF1401)
    Codeforces Round #662 Div.2 (CF1392)
    std::array的效率问题
    CSS布局学习总结
    TCP中三次握手与四次挥手
    初见Vuex
    初见webpack
    CentOS7使用yum简便安装mysql5.7
  • 原文地址:https://www.cnblogs.com/starcrm/p/1519232.html
Copyright © 2011-2022 走看看