重构二--在对象之间搬移特性(Introduce Local Extension)(4)--范例(2)--使用Subclass(子类)

重构二--在对象之间搬移特性(Introduce Local Extension)(4)--范例(2)--使用Subclass(子类)
首先,我要建立一个新的MfDateSub class来表示[日期],并使其成为Date的subclass:
    class MfDateSub extends Date
然后,我需要处理Date和我的extension class之间的不同处。MfDateSub构造函数需要委托(delegating)给Date构造函数:
    public MfDateSub(String dateString) {
       super(dateString);
    }
现在,我需要加入一个转型构造函数,其参数是一个隶属原类的对象:
    public MfDateSub(Date arg){
       super(arg.getTime());
    }
现在,我可以在extension class中添加新特性,并使用 Move Method(142)将所有外加函数(foreign method)搬移到extension 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);
       }

你可能感兴趣的:(重构二--在对象之间搬移特性(Introduce Local Extension)(4)--范例(2)--使用Subclass(子类))