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
  • 相关阅读:
    udhcp源码详解(四) 之租赁IP的管理
    udhcp源码详解(四) 之租赁IP的管理
    udhcp源码详解(三) 下 之配置信息的读取
    udhcp源码详解(三)上 之配置信息的读取
    udhcp源码详解(二)--转
    udhcp详解源码(序)
    udhcp源码详解(一)之文件组织结构(dhcp server) --转
    UNIX网络编程学习(9)--getsockname和getpeername的用法及实例(转)
    php 函数
    git-命令
  • 原文地址:https://www.cnblogs.com/starcrm/p/1519232.html
Copyright © 2011-2022 走看看