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

   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

相关文章:

  • 2021-12-16
  • 2021-08-28
  • 2021-09-21
  • 2021-10-18
  • 2021-10-22
  • 2021-10-07
  • 2021-12-25
猜你喜欢
  • 2022-01-17
  • 2021-05-18
  • 2022-01-13
  • 2022-01-04
  • 2021-05-24
  • 2022-02-13
相关资源
相似解决方案