你从某个对象中取出若干值,将它们作为某一次函数调用时的参数。
1.动机
- 有时候,你会讲来自同一对象的若干项数据作为参数,传递给某个函数。这样做的问题在于:万一将来被调用函数需要新的数据项,你就必须查找并修改一次函数的所有调用。如果你把这些数据所属的整个独享传给函数,可以避免这种尴尬的处境,因为被调用函数可以向那个参数对象请求任何它想要的数据。
- 提高代码可读性。
- 不好处:如果传递的参数是整个对象,被调用函数所在的对象就需要依赖参数对象。如果这会使你的依赖结构恶化,那么久不应该使用Preserve Whole Object。
- 如果被调用函数使用了来自另一个对象的额很多项数据,这可能意味该函数实际上应该被定义在那些数据所属的兑现各种。
2. 做法
- 对你的目标函数新添一个参数项,用以代表原数据所在的完整对象。
- 编译,测试。
- 判断哪些参数可被包含在新添的完整对象中。
- 选择上述参数之一,将被调用函数中原来引用该函数的地方,改为调用新添参数对象相应取值函数。
- 删除该项参数。
- 编译,测试。
- 针对所有可从完整对象中获得得参数,重复上述过程。
- 删除调用端中那些带有被删除参数的代码。
1)如果调用端还在其他地方使用了这些参数,就不奥删除它们。 - 编译,测试。