重构读书笔记-7_6-Remove_Middle_Man

2019-06-19  本文已影响0人  MR_Model

重构第七章

6.Remove Middle Man(移除中间人)
某个类做了过多的简单委托动作(simple delegation),让客户直接调用delegate(受托类)。

之前使用Hide delegate(隐藏委托)的方法将人和部门之间的联系隐藏起来。现在由于业务要求,或者Person class中简单委托过多需要移除中间人了。

Example:

class Person...
    Department _department;
    public Person getManager() {
        return _department.getManage();
    }
class Department...
    private Person _manager;
    public Department(Person manager) {
        _manager = manager;
    }

manager = john.getManager();

Analyse:

示例中,使用和封装department都比较简单,但是如果Person中含有得到Department的名称时,你需要在Person类中再添加一个

public string getDepartmentName() {
    return _department.getName();
}

如果再来其他的请求,其他的数据,那Person类中又会增加很多的委托函数,这样会导致整个Person类臃肿不堪。此时,你应该使用Remove Middle Man(移除中间人)。

End:

class Person...
public Department getDepartment() {
    return _department;
}

manager = john.getDepartment().getManager();
departmentName = john.getDepartment().getName();

Conclusion:

Hide Delegate(隐藏委托)和Remove Middle Man是两种相辅相成的重构手法。
现实中进行重构的时候,需要编程者根据具体的情况,来判断使用哪一种方法。
同时,重构完后,这个重构结果也不是一成不变的,他会根据实际业务的增长去动态变化。

注意

重构必须在有单元测试的情况下,保证之前的功能修改后不收影响。切记!!!
上一篇下一篇

猜你喜欢

热点阅读