ivaneeo's blog

自由的力量,自由的生活。

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
首先,我要建立一个新的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);
       }
posted on 2005-08-31 15:14 ivaneeo 阅读(161) 评论(0)  编辑  收藏 所属分类: refactoring-从地狱中重生

只有注册用户登录后才能发表评论。


网站导航: