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不复存在。

转载于:https://my.oschina.net/u/134516/blog/129178

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值