文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Refactoring--Pull Up /Push Down Method or Field

Refactoring--Pull Up /Push Down Method or Field

时间:2011-02-18  来源:无为是最高

代码     /// <summary>
    /// 交通工具
    /// </summary>
    public abstract class Vehicle
    {
        public void Turn(Direction direction)
        {
            // code here
        }
    }

/// <summary>
    /// 小车
    /// </summary>
    public class Car : Vehicle
    {
        // other methods
    }

    /// <summary>
    /// 摩托车
    /// </summary>
     public class Motorcycle : Vehicle
     {
         // other methods
     }

    /// <summary>
    /// 方向
    /// </summary>
     public enum Direction
     {
         Left,
         Right
     }

 

看上去很自然,但有时候在实际code的时候,新增,修改过程中却往往容易破坏这个规则。

同样,只在继承链的一个子类中使用的方法,就要考虑push down 了!

 

代码 // 重构前代码说明:
//Push Down Method
//Push it Down in the inheritance chain when a method only one sub-class to be used by implementer

    
    public abstract class Animal
    {
        //犬吠
        public void Bark()
        {
        //很明显其他动物是不会吠的,only dog
        // code to bark
        }
    }

     public class Dog : Animal
     {
     }

     public class Cat : Animal
     {
     }

 

这样重构也很自然了,注:当一个抽象类没有任何方法的时候你是否考虑将其转换到接口?没有任何方法和属性的接口即标识接口(marker interface)。标识接口没有具体语义,只是对统一类对象的一个标识却没有相同的方法,方便framework基本的统一处理。

 

方法的pull和push就这么简单和自然了,字段当然也是,只是这个意识需要加强。

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载