zoukankan      html  css  js  c++  java
  • 与继承相关的一些重构(一)

    本文主要讲几个涉及到继承方面的重构,继承一般会涉及到抽象类,接口,我们通常把有相似Func的类提取同类项,也就是抽象出接口或者抽象类;这样做的好处不言而喻,可以方便的扩展,修改,维护子类的共有方法,属性,索引等等。使用基类不仅仅是把各个子类联系起来了,更是降低了各个子类间的耦合度,再次体现了面向接口、继承编程的思想。
      1.提升方法:指将方法向继承链的上层迁移的过程。

       用法场景:当子类A中的一个方法需要被多个子类调用的时候,需要把这个方法提升到基类中,而不能让其它的子类都去Call子类A中的这个方法。这样做唯一的缺点是扩充了基类的接口、增加了其复杂性,因此需谨慎使用。只有当一个以上的子类需要使用该方法时才需要进行迁移。

      2.下放方法:指将方法向继承链的下层迁移的过程。

       用法场景:此重构和上面的方法正好相反,当基类中的某个方法只需要被一个或少数几个子类实现的时候,可以考虑把基类中的方法下放到适合的子类中,避免引起不必要的混淆。

      3.提升属性:指将属性向继承链的上层迁移的过程。

       用法场景:和上移方法类似,这里只不过把方法改成了属性,把大多数子类需要用的属性提升到基类中

      4.下放属性:指将属性向继承链的下层迁移的过程。

       用法场景:和提升属性的方法正好相反,把只有个别子类需要用到的属性下放

      下面为对这四种重构方法的代码演示。

    publicabstractclass Vehicle
    {
      
    publicstring Driver { get; set;} //提升属性:所有的交通工具都有驾驶员
      publicvoid Turn()
    {
    //提升方法:所有的交通工具都可以转向
    }
    }
    publicclass Car : Vehicle
    {

    }
    publicclass Plane : Vehicle
    {
      
    publicvoid Fly()
      {
        
    //下放方法:只有飞机才可以飞
      }
    }
    publicclass Ship : Vehicle
    {
      
    publicstring Anchor { get; set; } //下放属性:只有船才有锚
    }

      注意,在这里所有的方法和类,都可以在子类中使用new 关键字重新描述,合理的放置继承中方法,属性,字段的位置是个非常重要的重构方法,简单好用:)

  • 相关阅读:
    数据类型
    32个关键字
    标识符
    Xcode常用快捷键
    Linux中级之keepalived配置
    linux中级之keepalived概念
    Linux中级之lvs三个模式的图像补充(nat,dr,tun)
    linux中级之防火墙的数据传输过程
    Linux中级之netfilter/iptables应用及补充
    linux中级之lvs配置(命令)
  • 原文地址:https://www.cnblogs.com/ywsoftware/p/2892642.html
Copyright © 2011-2022 走看看