重构二--在对象之间搬移特性(Inline Class)(4)--范例

重构二--在对象之间搬移特性(Inline Class)(4)--范例
先前(上个重构项)我从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不复存在。

你可能感兴趣的:(重构二--在对象之间搬移特性(Inline Class)(4)--范例)