简单易懂读《重构》 - Message Chains (调用链过度耦合)

  • 含义:
    代码中调用链过长
  • 坏处:
    代码耦合度高,造成代码扩展或修改困难
  • 目标:
    减少代码中调用链过长过复杂造成的耦合度高问题
  • 实现方法:
    • 使用 Hide Delegate(隐藏委托关系) 来减少耦合。
    • 在重构前,观察调用链最终得到的对象是用来干什么的,看是否能用Extract Method(提炼函数),把使用该对象的代码提炼到独立的函数中,再运用Move Method(搬移函数),在原调用链中使用这个函数。

本文涉及的重构方法

Extract Method(提炼函数)
Move Method(搬移函数)
Hide Delegate(隐藏委托关系)
  • 作用:
    消除代码中过长的调用链
  • 步骤:
  1. 在被调用的字段中建立一个负责委托调用的新函数
  2. 调整原来调用的地方,改为只调用对象提供的委托函数。
  3. 编译,测试
  • 代码实例
//有2个类,人员和部门表,类如下:
class Person {
	Department dept;
	//getter 和setter
}
class Department {
	private String code;
	private Person manager;
	//getter & setter;
}
//实际使用,如需要获取某人的经理是谁
manager = john.getDepartment().getManager();
//重构后,在Person类中加一个简单的委托函数
public Person getManager() {
	return dept.getManager();
}
//重构后,需要获取某人的经理是谁,就可以直接调用getManager,减少调用链,减少代码耦合
manager = john.getManager();
  • 重构思路:
    通过把调用链隐藏到直接调用者里面,减少代码耦合度,因为调用者并不关心调用链内部是如果调用的,而是想直接获得结果。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值