首先声明一个wrapping class:
class MfDateWrap {
private Date _original;
}
使用wrapping方案时,我对构造函数的设定与先前有所不同。现在的构造函数将只是执行一个单纯的委托动作(delegation):
public MfDateWrap(String dateString) {
_original = new Date(dateString);
}
而转型构造函数则只是对其instance变量赋值而已:
public int getYear() {
return _original.getYear();
}
public boolean equals(MfDateWrap arg) {
return (toDate().equals(arg.toDate());
}
完成这项工作之后,我就可以后使用Move Method(142)将日期相关行为搬移到新class中。于是以下代码:
client class...
private static Date nextDay(Date arg) {
return new Date(arg.getYear(), arg.getMonth(), arg.getDate() + 1);
}
经过搬移之后,就成了:
class MfDate...
Date nextDay() {
return new Date(getYear(), getMonth(), getDate() + 1);
}