提取方法对象
此重构允许将任意代码片段单独移动到新类的方法中,以便进一步将该方法分解为同一对象上的其他方法。
执行重构
- 在代码编辑器中,选择要提取到包装类的新方法的代码片段。
- 单击右键展示上下文菜单,选择 。
- 在打开的“提取方法对象”对话框中,提供重构选项。
- “创建内部类”:选择创建新的内部类。所有局部变量都转换为此类的字段。提供类的名称及其可见性修饰符。
- “创建匿名类”:选择创建新对象并提供需要创建方法的名称。
- 在“参数”区域中,选择变量作为方法参数。
如下图所示:
图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); } } } }