《31天重构》5:提升类属性

提升类属性与提升类方法一样,都是为了让子类能够继承父类中非私有(private)的属性字段,这样做当然是实现了代码重用了。

重构前代码例子如下:

  
  
  
  
  1. abstract class Animal {  
  2.     // some fields  
  3. }  
  4.  
  5. class Dog extends Animal {  
  6.     public String name;  
  7. }  
  8.  
  9. class Cat extends Animal{  
  10.     public String name;  

很明显上面的 Dog 类和 Cat 类存在相同属性,而且它们都是 Animal 抽象类的子类,此时应该将 name 属性提升到 Animal 类中以避免重复代码,如下:

  
  
  
  
  1. abstract class Animal {  
  2.     protected String name;  
  3.     // some fields  
  4. }  
  5.  
  6. class Dog extends Animal {  
  7.     // field "name" from Animal  
  8. }  
  9.  
  10. class Cat extends Animal{  
  11.     // field "name" from Animal  


这种提升属性的重构方法在设计模式中使用得更加明显,像装饰模式(Decorator),其中的抽象装饰者类中就拥有了自身类型的引用属性,并在构造方法中根据传入的具体装饰者(即其子类)来初始化该自身类型的属性。每个子类都获得了可以装饰自身的父类引用。

原文链接如下:

http://www.lostechies.com/blogs/sean_chambers/archive/2009/08/05/refactoring-day-5-pull-up-field.aspx

你可能感兴趣的:(重构,职场,属性,休闲,Refactoring)