ivaneeo's blog

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

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
先前(上个重构项)我从TelephoneNumber提炼出另一个class,现在我要将它inlining塞回到Person去。一开始这两个classes是分离的:
class Person...
    public String getName() {
       return _name;
    }
    public String getTelephoneNumber() {
       return _officeTelephone.getTelephoneNumber();
    }
    TelephoneNumber getOfficeTelephone() {
       return _officeTelephone;
    }

    private String _name;
    private TelephoneNumber _officeTelephone = new TelephoneNumber();


class TelephoneNumber...
    public String getTelephoneNumber() {
       return ("(" + _areaCode + ")" + _number);
    String getAreaCode() {
       return _areaCode;
    }
    void setAreaCode(String arg) {
       _areaCode = arg;
    }
    String getNumber() {
       return _number;
    }
    void setNumber(String arg) {
       _number = arg;
    }
    private String _number;
    private String _areaCode;

首先我在Person中声明TelephoneNumber的所有[可见](public)函数:
class Person...
    String getAreaCode() {
       return _officeTelephone.getAreaCode();
    }
    void setAreaCode(String arg) {
       _officeTelephone.setAreaCode(arg);
    }
    String getNumber() {
       return
_officeTelephone.getNumber();
    }
    void setNumber(String arg) {
      
_officeTelephone.setNumber(arg);
    }


现在,我要找出TelephoneNumber的所有用户,让它们转而使用Person接口。于是下列代码:
    Person martin = new Person();
    martin.getOfficeTelephone().setAreaCode("781");
就变成了:
    Person martin = new Person();
    martin.setAreaCode("781");
现在,我可以持续使用Move Method(142)和Move Field(146),直到TelephoneNumber不复存在。
posted on 2005-08-31 10:57 ivaneeo 阅读(148) 评论(0)  编辑  收藏 所属分类: refactoring-从地狱中重生

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


网站导航: