阅读(4107) (14)

IntelliJ IDEA重构:删除中间人

2017-11-09 10:10:57 更新

此重构也可从 UML 类图中获得。

通过 "删除中间人" 重构,您可以替换在类中委托方法的所有调用,并直接对委托到的字段进行等效调用。此外,您还可以自动删除类委托方法,现在将不使用。

如果您有一个简单地将其许多方法调用转发给其他类的对象的类,并且希望简化您的设计,则此重构非常有用。

删除中间人示例

操作前:

public class Foo {
    Bar bar;
    public Foo getImpValue() {
        return bar.getImpValue();
    }
}

public class Bar {
    private Foo impValue1;
    public Bar(Foo impValue) {
        impValue1 = impValue;
    }
    public Foo getImpValue() {
        return impValue1;
    }
}

public class Client {
   Foo a;
   Foo impValue = a.getImpValue();
}

操作后:

public class Foo {
    Bar bar;
    public Bar getbar() {
        return bar;
    }
}

public class Bar {
    private Foo impValue1;
    public Bar(Foo impValue) {
        impValue1 = impValue;
    }
    public Foo getImpValue(){
        return impValue1;
    }
}

public class Client {
   Foo a;
   Foo impValue = a.getbar().getImpValue();
}

删除中间人

  1. 在编辑器中打开有问题的类,并将插入符号放在委托字段的名称中。或者,在所需类的“结构”视图中选择委托字段。
  2. 在主菜单或选择的上下文菜单上选择:重构| 删除中间人(Refactor | Remove Middleman)。
  3. 在删除中间人对话框中:
    • 选择是否希望任何只转发到此字段的调用的方法都被委派。这些方法将不被当前项目中的代码使用,但是项目之外的代码仍然可能需要这些方法。您可能希望保留这些委托方法以实现向后兼容。
    • 单击 "预览" 以使 IntelliJ IDEA 搜索所选字段的用法,并在 "查找" 工具窗口中显示重构预览结果。在预览中,您可以将其用于重构或跳过它们。单击 "执行重构" 以将重构应用于所选的用法。
      如果您不想查看使用情况,请单击 "重构"。在这种情况下,将立即更改使用实例。

    如果受影响的文件是只读的,则可能会显示 "重构预览" 窗口。