zoukankan      html  css  js  c++  java
  • 31天重构指南之三: 提升方法(pull up )

    提升方法的重构是指将方法提升到继承链的较高层次,该重构一般发生了当一个方法需要被更多的继承链中的多个实现使用时。

       1: public abstract class Vehicle
       2: {
       3:     // other methods
       4: }
       5:  
       6: public class Car : Vehicle
       7: {
       8:     public void Turn(Direction direction)
       9:     {
      10:         // code here
      11:     }
      12: }
      13:  
      14: public class Motorcycle : Vehicle
      15: {
      16: }
      17:  
      18: public enum Direction
      19: {
      20:     Left,
      21:     Right
      22: }
     
    在上面的代码中,Turn方法只存在于Car类中,所以我们在Motorcycle类中无法使用Turn方法,如果我们想在Motorcycle类中使用Turn方法,则需要将Turn方法提升到Vehicle类中,
    这样Vehicle所有的子类都可以使用Turn方法,这样做的一个缺点是我们增加了Vehicle类的复杂性。因些只有当一个方法需要被类的多个子类使用时,才考虑将方法提升到基类中。
    另外面向对象的设计也不提倡过多的使用继承,而是提倡优先使用组织(composition)。下面是重构后的代码:
       1: public abstract class Vehicle
       2: {
       3:     public void Turn(Direction direction)
       4:     {
       5:         // code here
       6:     }
       7: }
       8:  
       9: public class Car : Vehicle
      10: {
      11: }
      12:  
      13: public class Motorcycle : Vehicle
      14: {
      15: }
      16:  
      17: public enum Direction
      18: {
      19:     Left,
      20:     Right
      21: }
    原文链接:http://www.lostechies.com/blogs/sean_chambers/archive/2009/08/03/refactoring-day-3-pull-up-method.aspx
  • 相关阅读:
    第十四次会议
    第十三次会议
    第十二次会议
    第十一次会议
    第十次会议
    第九次会议
    第八次会议
    第七次会议
    第六次会议
    机器学习
  • 原文地址:https://www.cnblogs.com/zhangronghua/p/1567452.html
Copyright © 2011-2022 走看看