• 桥接模式


    对象的继承关系是在编译的时候就定义好的,所以无法在运行时改变从父类集成的实现。子类的实现与它的父类有非常紧密的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化。当你需要复用子类的时候,如果继承下来的实现并不适合解决新的问题,则父类必须重写或被其他更适合的类替换。这种依赖关系限制了灵活性并最终限制了复用性。

    组合优于继承的体现

        abstract class Handsetsoft
        {
            public abstract void Run();
        }
    
        class HandsetAddressList : Handsetsoft
        {
            public override void Run()
            {
                Console.WriteLine("运行手机通信录");
            }
        }
    
        class HandsetGame : Handsetsoft
        {
            public override void Run()
            {
                Console.WriteLine("手机能够运行游戏");
            }
        }
    
        //使用桥接模式,将原本所应继承的Handsetsoft接口,通过组合的方式引入进来,这样当接口中的内容发生变化的时候,就不需要更改所有实现接口的子类。
        //这也就是为什么书中并没有使用接口而是使用抽象类来定义接口,因为这样就无法让新生成的手机品牌(HandsetBrandN)既能继承HandsetBrand,同时还能继承Handsetsoft。
       abstract class HandsetBrand
       {
           protected Handsetsoft soft;
           //设置手机软件
           public void SetHandsetSoft(Handsetsoft soft) {
               this.soft = soft;
           }
           public abstract void Run();
        }
    
        //使用桥接模
        class HandsetBrandN : HandsetBrand
        {
            public override void Run()
            {
                soft.Run();
            }
        }
        //使用继承的方式
        class HandsetBrandM : Handsetsoft, HandsetBrand
        {
            //todo……继承并实现接口中的内容。
            //当接口中的功能新增的时候,那么以前写好的代码,都要去实现新增的接口,当类多的时候,就会很麻烦。
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                HandsetBrand ab = new HandsetBrandN();
                ab.SetHandsetSoft(new HandsetGame());
                ab.Run();
    
                ab.SetHandsetSoft(new HandsetAddressList());
                ab.Run();
            }
        }
  • 相关阅读:
    常用的居中方法
    CSS实现盒子高度撑开且以最高的为高
    利用vertical-align实现行内元素对齐
    CSS实现模糊效果
    【LeetCode 37】解数独
    【LeetCode 36】有效的数独
    【LeetCode 35】搜索插入位置
    【LeetCode 34】在排序数组中查找元素的第一个和最后一个位置
    【LeetCode 33】搜索旋转排序数组
    【LeetCode 32】最长有效括号
  • 原文地址:https://www.cnblogs.com/vichin/p/11592877.html
Copyright © 2020-2023  润新知