以函数对象取代函数(Replace Method with Method Object)
有一个大型函数,其中对局部变量的使用使你无法采用Extract Method。将这个函数放进一个单独的对象里中,如此一来局部变量就成了对象内的字段,然后你就可以在同一个对象中将这个大型函数分解为多个小型函数
一、动机
1、小函数优美动人,只要将相对独立的代码从大型函数中提炼出来,就可以大大提高代码的可读性
2、局部变量的存在会增加函数分解难度。如果一个函数之中局部变量泛滥成灾,那么想分解这个函数是非常困难的
二、做法
1、建立一个新类,根据待处理函数的用途,为这个类命名
2、在新类中建立一个final字段,用以保存原先大型函数所在的对象,我们将这个对象称为“源对象”。同时,针对原函数的每个临时变量和每个参数,在新类中建立一个对应的字段保存之。
3、在新类中建立一个构造函数,接收源对象及原函数的所有参数作为参数
4、在新类中建立一个compute()函数
5、将原函数的代码复制到compute()函数中。如果需要调用源对象的任何函数,请通过源对象字段调用。
6、编译
7、将就函数的函数本体替换为这样一条语句:创建上述新类的一个新对象,而后调用其中的compute()函数
时间: 2024-10-24 17:08:33