美文网首页
重构读书笔记-7_6-Remove_Middle_Man

重构读书笔记-7_6-Remove_Middle_Man

作者: MR_Model | 来源:发表于2019-06-19 09:23 被阅读0次

    重构第七章

    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是两种相辅相成的重构手法。
    现实中进行重构的时候,需要编程者根据具体的情况,来判断使用哪一种方法。
    同时,重构完后,这个重构结果也不是一成不变的,他会根据实际业务的增长去动态变化。

    注意

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

    相关文章

      网友评论

          本文标题:重构读书笔记-7_6-Remove_Middle_Man

          本文链接:https://www.haomeiwen.com/subject/oyxhqctx.html