IntelliJ IDEA重構(gòu):刪除中間人

2018-11-09 10:21 更新

此重構(gòu)也可從 UML 類圖中獲得。

通過 "刪除中間人" 重構(gòu),您可以替換在類中委托方法的所有調(diào)用,并直接對委托到的字段進行等效調(diào)用。此外,您還可以自動刪除類委托方法,現(xiàn)在將不使用。

如果您有一個簡單地將其許多方法調(diào)用轉(zhuǎn)發(fā)給其他類的對象的類,并且希望簡化您的設(shè)計,則此重構(gòu)非常有用。

刪除中間人示例

操作前:

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. 在編輯器中打開有問題的類,并將插入符號放在委托字段的名稱中?;蛘撸谒桀惖摹敖Y(jié)構(gòu)”視圖中選擇委托字段。
  2. 在主菜單或選擇的上下文菜單上選擇:重構(gòu)| 刪除中間人(Refactor | Remove Middleman)。
  3. 在刪除中間人對話框中:
    • 選擇是否希望任何只轉(zhuǎn)發(fā)到此字段的調(diào)用的方法都被委派。這些方法將不被當(dāng)前項目中的代碼使用,但是項目之外的代碼仍然可能需要這些方法。您可能希望保留這些委托方法以實現(xiàn)向后兼容。
    • 單擊 "預(yù)覽" 以使 IntelliJ IDEA 搜索所選字段的用法,并在 "查找" 工具窗口中顯示重構(gòu)預(yù)覽結(jié)果。在預(yù)覽中,您可以將其用于重構(gòu)或跳過它們。單擊 "執(zhí)行重構(gòu)" 以將重構(gòu)應(yīng)用于所選的用法。
      如果您不想查看使用情況,請單擊 "重構(gòu)"。在這種情況下,將立即更改使用實例。

    如果受影響的文件是只讀的,則可能會顯示 "重構(gòu)預(yù)覽" 窗口。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號