重构读书笔记-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是两种相辅相成的重构手法。
现实中进行重构的时候,需要编程者根据具体的情况,来判断使用哪一种方法。
同时,重构完后,这个重构结果也不是一成不变的,他会根据实际业务的增长去动态变化。
注意
重构必须在有单元测试的情况下,保证之前的功能修改后不收影响。切记!!!