更新时间:2024-04-12 GMT+08:00
分享

提取委托

此重构允许您基于现有类的成员选定来创建新类。

执行重构

  1. 在代码编辑器中,将光标放置在要将其成员提取到新类的类中的任何位置。
  2. 在主菜单或编辑器上下文菜单中,选择Refactor>Extract Delegate
  3. 在打开的Extract Delegate对话框中,提供重构参数。

    • 提供提取类的名称、包和目标目录。
    • 选中Create nested class复选框以在当前类中创建新类。
    • 选中Generate accessors复选框,为提取的字段生成getter方法。
    • 选中Extract as enum复选框,将提取的类创建为枚举类。如果源类包含静态最终字段static final fields,这是可能的。
    • Members to Extract区域中,选择要提取的类成员。如果选择了Extract as enum,则还可以选择要作为枚举常量提取的字段旁边的As Enum复选框。
    • Visibility选项中,选择要应用于提取的类成员的可见性修改器。要自动应用所需的可见性修改器,以便访问类成员,请选择Escalate选项。

  4. 单击Refactor以应用重构。

示例

作为一个例子,让我们将ExtractDelegate类中的print方法提取到一个嵌套的Printer枚举类中。

重构前

class ExtractDelegate {
    public static void main(String[] args) {
        new ExtractDelegate().print();
    }

    private static final String message = "Hello World!";

    private void print() {
        System.out.println(message);
    }
}

重构后

class ExtractDelegate {
    private final Printer printer = new Printer();

    public static void main(String[] args) {
        new ExtractDelegate().print();
    }

    private void print() {
        printer.print();
    }

    public enum Printer {
        message("Hello World!");
        private String value;

        public String getValue() {
            return value;
        }

        Printer(String value) {
            this.value = value;
        }

        private void print() {
            System.out.println(message.getValue());
        }
    }
}

相关文档