今天看啥
热点:

引言:如果鸟会飞,鸵鸟是鸟吗?鸵鸟如何继承鸟类?

如果一定要鸵鸟继承鸟类,可以采用组合的方法,把鸟类中可以被鸵鸟继承的函数挑选出来,而不是类继承,继承是一种强耦合的结构,父变子变,多次继承很可能照成”类爆炸“。组合的一种实现方式就是桥接模式----从多个角度看待同一件事物。

简单代码:

    //鸟类
    class bird {
        public void eat();
        public void sleep();
        public void fly();
    }
    class ostrich {
        public void sleep();
        public void eat();
    }

桥接实例:

以前不同手机有不同型号,不同型号手机里面软件不能再别的手机里面运行 ,不同于现在安卓和ios。

\

代码:

        //  手机软件
    abstract class HandsetSoft {
        public abstract void run();
    }
    //手机游戏
    class BandsetGame :HandsetSoft {
        public override void run()
        {
            //throw new NotImplementedException();
            Console.WriteLine("运行手机软件游戏");
        }
        
    }
    //手机通讯录
     class HandsetAddressList :HandsetSoft{
         public override void run()
         {
             //throw new NotImplementedException();
             Console.WriteLine("运行手机通讯录");
         }
    }
    //手机品牌类
     abstract class HandsetBrand {
         protected HandsetSoft soft;
         //运行手机软件
         public void setHandsetSoft(HandsetSoft soft) {
             this.soft = soft;
         }
         public abstract void run();
     }
    /// <summary>
    /// 手机品牌N
    /// </summary>
     class HandsetBrandN : HandsetBrand {
         public override void run()
         {
             //throw new NotImplementedException();
             soft.run();

         }
     }
    /// <summary>
    /// 手机品牌M
    /// </summary>
     class HandsetBrandM : HandsetBrand {
         public override void run()
         {
             //throw new NotImplementedException();
             soft.run();
         }
     }

    class Program
    {
        static void Main(string[] args)
        {
            HandsetBrand ab;
            ab = new HandsetBrandN();
            ab.setHandsetSoft(new BandsetGame());
            ab.run();

            ab.setHandsetSoft(new HandsetAddressList());
            ab.run();

            ab = new HandsetBrandM();
            ab.setHandsetSoft(new BandsetGame());
            ab.run();

            ab.setHandsetSoft(new HandsetAddressList());
            ab.run();

            Console.Read();

        }
    }
运行结果:

\

www.bkjia.comtruehttp://www.bkjia.com/xtzh/746239.htmlTechArticle引言:如果鸟会飞,鸵鸟是鸟吗?鸵鸟如何继承鸟类? 如果一定要鸵鸟继承鸟类,可以采用组合的方法,把鸟类中可以被鸵鸟继承的函数挑...

相关文章

相关搜索: 设计模式 模式

帮客评论

视觉看点