重构第十一章
3.Pull Up Constructor Body(构造函数本体上移)
你在各个subclass中拥有一个构造函数,它们的本体(代码)几乎完全一致。在superclass中新建一个构造函数,并在subclass构造函数中调用它。
Example:
class Employee...
protected String _name;
protected String _id;
class Manager extends Employee...
public Manager(String name, String id, int grade) {
_name =name;
_id = id;
_grade = grade;
}
private int _grade;
End:
class Employee...
Employee(String name, String id) {
_name = name;
_id = id;
}
class Manager extends Employee...
public Manager(String name, String id, int grade) {
super(name, id);
_grade = grade;
}
private int _grade;
Conclusion:
对于构造函数而言,它们彼此的共同行为,往往是对象的构建,这时候你需要在superclass中提供一个构造函数,然后让subclass都来调用它。这里无法使用Pull Up Method(函数上移)的方法,因为你无法在subclass中继承superclass的构造函数。
注意
重构必须在有单元测试的情况下,保证之前的功能修改后不收影响。切记!!!
网友评论