31天重构指南之四:降低方法(pull down)

昨天我们讨论了利用“提升方法”重构将多个子类要用到的方法提升到父类中,今天我们来看和“提升方法”相反的重构---降低方法,下面是待重构的代码:

   1: public abstract class Animal
   2: {
   3:     public void Bark()
   4:     {
   5:         // code to bark
   6:     }
   7: }
   8:  
   9: public class Dog : Animal
  10: {
  11: }
  12:  
  13: public class Cat : Animal
  14: {
  15: }
 
如代码所示,我们有一个带有Bark方法的Animal基类,还有两个实现了Animal的子类Dog和Cat,但在Cat类中我们却不需要Bark方法,只有在Dog类中需要,所以我们将Bark方法降低到Dog类中 。
另外,现在也是一个判断是否将Animal转换为接口的机会,如果重构后Animal中没有其它的方法了,就可以将Animal转化为一个接口,否则不用转换。下面是重构后的代码:
 
   1: public abstract class Animal
   2: {
   3: }
   4:  
   5: public class Dog : Animal
   6: {
   7:     public void Bark()
   8:     {
   9:         // code to bark
  10:     }
  11: }
  12:  
  13: public class Cat : Animal
  14: {
  15: }
原文链接:http://www.lostechies.com/blogs/sean_chambers/archive/2009/08/04/refactoring-day-4-push-down-method.aspx
原文地址:https://www.cnblogs.com/zhangronghua/p/1567453.html