Inline Class (将类内联化)

Summary: 

某个类没有做太多事情。将这个类的所有特性搬移到另一个类,然后移除原类。

Motivation:  

Inline Class 正好与Extract Class相反。如果一个类不再承担足够责任、不再有单独存在的理由(这通常是因为此前的重构动作移走了这个类的责任),我们就应该挑选这一“萎缩类”的最频繁用户(也是个类),以Inline Class手法将“萎缩类”塞进另一个类中。

Mechanics: 

1.在目标类身上声明源类的public协议,将所有函数委托至源类。

如果“以一个独立接口表示源类函数”更合适的话,就应该在内联之前先使用Extract Interface。

2.修改所有源类引用点,改而引用目标类。

 将源类声明为private,以斩断包之外的所有引用可能。同时修改源类的名称,这便可使编译器帮助你捕捉到所有对于源类的隐藏引用点。

3.编译,测试。

4.运用Move Method 和Move Field将源类的特性全部搬移到目标类

5.为源类举行一个简单的“丧礼”。

范例

         上个重构(Extract Class )我们从TelephoneNumber提炼出另一个类,现在我们将它塞回到Person去。一开始这两个类是分离的(Extract Class中的范例)。

          首先我们在Person中声明TelephoneNumber的所有public 函数:

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和Move Field,直到TelephoneNumber不复存在。

你可能感兴趣的:(Inline Class (将类内联化))