与提升方法相似,提升字段也有一个相反的重构叫“降低字段”,降低字段是一个简单到不需要我们多说的重构,来看下面的代码:
1: public abstract class Task
2: {
3: protected string _resolution;
4: }
5:
6: public class BugTask : Task
7: {
8: }
9:
10: public class FeatureTask : Task
11: {
12: }
在上面的例子中,我们在基类中定义了一个string类型的字段,但只有基类的一个子类使用,所以我们可以考虑将string类型的字段降低到使用它的子类中,需要注意的是,只有我们确定除了这个
子类没有别的子类要使用字段时,才应该将字段降低到子类中。
1: public abstract class Task
2: {
3: }
4:
5: public class BugTask : Task
6: {
7: private string _resolution;
8: }
9:
10: public class FeatureTask : Task
11: {
12: }
原文链接:http://www.lostechies.com/blogs/sean_chambers/archive/2009/08/06/refactoring-day-6-push-down-field.aspx