• 用C#改写Head First Design PatternsAdapter 适配器(原创)


    原作是把一只火鸡通过一个适配器,出来后就是一只鸭,神奇。

    改成C#的代码:

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

    namespace Adapter
    {
        /// <summary>
        /// 鸭子接口
        /// </summary>
        public interface Duck
        {
            //可以咵咵的叫
            void quack();
            void fly();
        }

        /// <summary>
        /// 火鸡接口
        /// </summary>
        public interface Turkey
        {
            //可以咯咯的叫
            void gobble();
            void fly();
        }
    }

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

    namespace Adapter
    {
        class MallardDuck:Duck
        {

            #region Duck 成员

            void Duck.quack()
            {
                System.Console.WriteLine("绿头鸭叫!");
            }

            void Duck.fly()
            {
                System.Console.WriteLine("绿头鸭飞!");
            }

            #endregion
        }
    }

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

    namespace Adapter
    {

        //火鸡类
         public class WildTurkey:Turkey
        {

            #region Turkey 成员

            void Turkey.gobble()
            {
                System.Console.WriteLine("火鸡咯咯的叫!");
            }

            void Turkey.fly()
            {
                System.Console.WriteLine("火鸡飞!");
            }

            #endregion
        }

        //火鸡适配器类
        public class TurkeyAdapter : Duck
        {
            Turkey t;

            public TurkeyAdapter(Turkey t)
            {
                this.t = t;
            }

            #region Duck 成员

            void Duck.quack()
            {
                t.gobble();
            }

            void Duck.fly()
            {
                //火鸡的飞行距离太短了,必须多飞才能看上去像鸭子
                for (int i = 0; i < 5; i++)
                {
                    t.fly();
                }
            }

            #endregion
        }
    }


     

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

    namespace Adapter
    {
        class Program
        {
            static void Main(string[] args)
            {
                //进去的是火鸡
                Turkey t = new WildTurkey();

                //出来就是只鸭子了!
                Duck d= new TurkeyAdapter(t);
                d.quack();

                System.Console.ReadLine();
        
            }
        }
    }

    关于作者: 王昕(QQ:475660) 在广州工作生活30余年。十多年开发经验,在Java、即时通讯、NoSQL、BPM、大数据等领域较有经验。
    目前维护的开源产品:https://gitee.com/475660
  • 相关阅读:
    HDU 1017—A Mathematical Curiosity
    N !
    L
    J
    Danganronpa
    A water problem
    hdu 5461 Largest Point
    India and China Origins hdu 5652 (BFS+二分)
    D (多校训练三) poj1919 (二分)
    Discovering Gold lightoj 1030 (dp+期望)
  • 原文地址:https://www.cnblogs.com/starcrm/p/1519199.html
Copyright © 2020-2023  润新知