某个类没有做太多事情。
将这个类的所有特性搬移到另一个类中,然后移除原类。
动机:
如果一个类不再承担足够责任,不再有单独存在的理由,将此萎缩类塞进另一个类中。
做法:
在目标类上声明源类的public协议,并将其中所有函数委托至源类。
=》如果“以一个独立接口表示源类函数”更合适的话,就应该在内联之前先使用extract interface。
修改所有源类引用点,改而引用目标类。
=》将源类声明为private,以斩断包之外的所有引用可能。同时修改源类的名称,这便可使编译器帮助你捕捉到所有对于源类的隐藏引用点。
运用move method和move field,将源类的特性全部搬移到目标类。
旧代码:
class Person...
public String getName(){
return _name;
}
public string getTelephoneNumber(){
return _officeTelephone.getTelephoneNumber();
}
TelephoneNumber getOfficeTelephone(){
return _officeTelephone;
}
private String _name;
private TelephoneNumber _officeTelephone = new TelephoneNumber();
class TelephoneNumber...
public String getTelephoneNumber(){
return ("("+ _areaCode")" + _number) ;
}
String getAreaCode(){
return _areaCode;
}
void setAreaCode(String arg){
_areaCode = arg;
}
String getNumber(){
return _number;
}
void setNumber(String arg){
_number = arg;
}
private String _number;
private String _areaCode;
新代码:
调用变换
Person martin = new Person();
martin.getOfficeTelephone().setAreaCode("781");
Person martin = new Person();
martin.setAreaCode("781");