首先聲明一個(gè)wrapping class:
class MfDateWrap {
private Date _original;
}
使用wrapping方案時(shí),我對構(gòu)造函數(shù)的設(shè)定與先前有所不同。現(xiàn)在的構(gòu)造函數(shù)將只是執(zhí)行一個(gè)單純的委托動(dòng)作(delegation):
public MfDateWrap(String dateString) {
_original = new Date(dateString);
}
而轉(zhuǎn)型構(gòu)造函數(shù)則只是對其instance變量賦值而已:
public int getYear() {
return _original.getYear();
}
public boolean equals(MfDateWrap arg) {
return (toDate().equals(arg.toDate());
}
完成這項(xiàng)工作之后,我就可以后使用Move Method(142)將日期相關(guān)行為搬移到新class中。于是以下代碼:
client class...
private static Date nextDay(Date arg) {
return new Date(arg.getYear(), arg.getMonth(), arg.getDate() + 1);
}
經(jīng)過搬移之后,就成了:
class MfDate...
Date nextDay() {
return new Date(getYear(), getMonth(), getDate() + 1);
}
class MfDateWrap {
private Date _original;
}
使用wrapping方案時(shí),我對構(gòu)造函數(shù)的設(shè)定與先前有所不同。現(xiàn)在的構(gòu)造函數(shù)將只是執(zhí)行一個(gè)單純的委托動(dòng)作(delegation):
public MfDateWrap(String dateString) {
_original = new Date(dateString);
}
而轉(zhuǎn)型構(gòu)造函數(shù)則只是對其instance變量賦值而已:
public int getYear() {
return _original.getYear();
}
public boolean equals(MfDateWrap arg) {
return (toDate().equals(arg.toDate());
}
完成這項(xiàng)工作之后,我就可以后使用Move Method(142)將日期相關(guān)行為搬移到新class中。于是以下代碼:
client class...
private static Date nextDay(Date arg) {
return new Date(arg.getYear(), arg.getMonth(), arg.getDate() + 1);
}
經(jīng)過搬移之后,就成了:
class MfDate...
Date nextDay() {
return new Date(getYear(), getMonth(), getDate() + 1);
}