技术开发 频道

在大型遗留系统基础上运作重构项目

    对象依赖关系复杂

    通过上述重构,尤其是改为通过构造函数参数来获得依赖对象之后,在一段时期会发现各个对象的构造函数堆积了大量的参数。例如经过重构之后的UserLoginDlgHelper的构造函数签名如下:

    共有5个依赖对象从构造函数传入,显得构造函数相当臃肿。这实际上反映出对象本身的臃肿:这个对象承担了太多责任,因此需要依赖大量其它对象。过长的构造函数参数列表是一个直观的指标,让我们能够清晰地看到对象依赖的情况。经过观察可以发现,这些依赖对象都分别只在几个方法中被用到,这意味着UserLoginDlgHelper对象本身的职责可以分为几个相对独立的方面,可以被拆分为几个独立的对象。

    重构办法:

    以依赖对象的使用情况为线索,把大对象拆分成多个小对象。大对象中原有的方法不删除,而是把调用委派给小对象。

    逐一修改大对象的使用者,让它们使用拆分出来的小对象。

    大对象中的方法无人使用时即可删除,依赖对象无人使用时即可从构造函数参数列表中删除。

    重构目标:

    每个对象的依赖对象数比较合理。

0
相关文章