修改代码的艺术, part 2

6. 提取并重写调用

和第四条类似, 只不过封装的是变量的访问.

原始代码:

 1Class TargetCls
 2{
 3    private InnerObjCls innerObj = new InnerObjCls();
 4    
 5    public void TargetFun()
 6    {
 7        
 8        innerObj.Fun();
 9        
10    }

11}

重构:

Code

    我们把测试方法内部依赖的对象叫'问题对象'. 如果问题对象上只有唯一一个方法的话, 提取并重写调用比较容易, 但如果同一对象上有多个问题方法的话, 我们可能就需要下面的手法了--提取并重写获取方法.

7. 提取并重写获取方法

原始代码:

Code

 重构:

Code

类似抽象工厂, 可以把每一个问题方法看做一个产品类, 获取方法返回的是一个具体的工厂. 这种方法从工厂这个接缝解开了大量具体的产品接缝. 

8. 定义Set方法; 特征提取, 创建方法对象.

 

PⅢ, 联系

    比较重要的是子类化重写和接口提取. 通常, 应用子类化重写解除测试方法内部调用本类方法的依赖; 应用接口提取解除测试方法内部调用变量对象(其他类型)方法的依赖.

 

PⅣ, 语录

 

PⅤ, 备注

    本文只记录了适用于面向对象方式的解依赖技术, 不做其他方面(过程, 函数)的介绍.

posted @ 2009-06-23 19:02  Tyrael  阅读(212)  评论(0编辑  收藏  举报