提取方法对象
此重构允许将任意代码片段单独移动到新类的方法中,以便进一步将该方法分解为同一对象上的其他方法。
执行重构
- 在代码编辑器中,选择要提取到包装类的新方法的代码片段。
- 单击右键展示上下文菜单,选择。
- 在打开的“提取方法对象”对话框中,提供重构选项。
- “创建内部类”:选择创建新的内部类。所有局部变量都转换为此类的字段。提供类的名称及其可见性修饰符。
- “创建匿名类”:选择创建新对象并提供需要创建方法的名称。
- 在“参数”区域中,选择变量作为方法参数。
如下图所示:
图1 提取方法对象
- 单击“重构”以应用重构。
示例
例如,将包含 println语句的for循环提取到Printer包装类的新方法中。
重构前
“com\refactoring\source\ExtractMethodObject.java”文件内容如下:
class ExtractMethodObject {
public static void main(String[] args) {
String text = "Hello World!";
int n = 5;
for (int i = 0; i < n; i++) {
System.out.println(text);
}
}
}
重构后
“com\refactoring\source\ExtractMethodObject.java”文件内容如下:
class ExtractMethodObject {
public static void main(String[] args) {
String text = "Hello World!";
int n = 5;
new Printer(text, n).invoke();
}
private static class Printer {
private String text;
private int n;
public Printer(String text, int n) {
this.text = text;
this.n = n;
}
public void invoke() {
for (int i = 0; i < n; i++) {
System.out.println(text);
}
}
}
}