某些参数总是很自然地同时出现。以一个对象取代这些参数。
动机:你常常会看到特定的一组参数总是被一起传递。可能有好几个函数都使用这一组参数,这些函数可能隶属同一个类,也可能隶属不同的类。这样一组参数就是所谓的Data Clumps(数据泥团),我们可以运用一个对象包装所有这些数据,再以该对象取代它们。哪怕只是为了把这些数据组织在一起,这样做也是值得的。本项重构的价值在于缩短参数列,过长的参数列总是难以理解的。此外,新对象所定义的访问函数还可以使代码更具一致性,这又降低了理解和修改代码的难度。
本项重构还可以带给你更多好处。当你把这些参数组织到一起后,往往很快可以发现一些可被移至新建类的行为。通常,原本使用那些参数的函数对这一组参数会有一些共通的处理,如果将这些共通行为移到新对象中,你可以减少很多重复代码。
做法:1、新建一个类,用以表现你想替换的一组参数。将这个类设为不可变的。
2、编译。
3、针对使用该组参数的所有函数,实施Add Parameter (添加参数),传入上述新建类的实例对象,并将此参数值设为null。
4、对于Data Clumps(数据泥团)中的每一项,从函数签名中移除,并修改调用端和函数本体,令它们都改而通过新的参数对象取得该值。
5、每去除一个参数,编译并测试。
6、将原先的参数全部去除后,观察有无适当函数可以运用 Move Mothod(搬移函数)到参数对象中。