首先聲明一個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);
}
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);
}