对象依赖关系复杂
通过上述重构,尤其是改为通过构造函数参数来获得依赖对象之后,在一段时期会发现各个对象的构造函数堆积了大量的参数。例如经过重构之后的UserLoginDlgHelper的构造函数签名如下:
共有5个依赖对象从构造函数传入,显得构造函数相当臃肿。这实际上反映出对象本身的臃肿:这个对象承担了太多责任,因此需要依赖大量其它对象。过长的构造函数参数列表是一个直观的指标,让我们能够清晰地看到对象依赖的情况。经过观察可以发现,这些依赖对象都分别只在几个方法中被用到,这意味着UserLoginDlgHelper对象本身的职责可以分为几个相对独立的方面,可以被拆分为几个独立的对象。
重构办法:
以依赖对象的使用情况为线索,把大对象拆分成多个小对象。大对象中原有的方法不删除,而是把调用委派给小对象。
逐一修改大对象的使用者,让它们使用拆分出来的小对象。
大对象中的方法无人使用时即可删除,依赖对象无人使用时即可从构造函数参数列表中删除。
重构目标:
每个对象的依赖对象数比较合理。