大家都知道在绝大多数情况下,我们都不应该是用static方法。但如果真的有了,比如说是在遗留系统中有这样的代码,我们应该怎么样“安全”的重构呢?
给一个简单的例子,假设我们有一个类叫做MyMath,代码如下:
MyMathTest.java
public class MyMathTest {
@Test
public void shouldReturnSumOfTwoNumbersWhenAdd() {
assertThat(MyMath.add(1, 1), is(2));
}
}
MyMath.java
public class MyMath {
public static int add(int a, int b) {
return a + b;
}
}
方法一:手动替换
1.拷贝static方法的body到另一个临时方法里
MyMath.java
public class MyMath {
public static int add(int a, int b) {
return a + b;
}
public int add2(int a, int b) {
return a + b;
}
}
2.delegate方法调用
public static int add(int a, int b) {