IntelliJ IDEA重構(gòu):用委托替換繼承

2018-11-10 10:26 更新

用委托替換繼承重構(gòu)允許 IntelliJ IDEA 從繼承層次結(jié)構(gòu)中刪除類,同時保留父級的功能。IntelliJ IDEA 創(chuàng)建了一個私有的內(nèi)部類,它繼承了以前的超類或接口。通過新的內(nèi)部類調(diào)用父節(jié)點的選定方法。

用委托替換繼承重構(gòu)示例

重構(gòu)前:

// File Class.java
public class Class extends SuperClass {
    public int varInt;
    public void openMethod() {
        ...
    }
}

// File SuperClass.java
public abstract class SuperClass {
    public static final int CONSTANT=0;
    public abstract void openMethod();
    public void secretMethod() {
        ...
    }
}

重構(gòu)后:

// File Class.java
public class Class {
    public int varInt;
    private final MySuperClass superClass = new MySuperClass();
    public SuperClass getSuperClass() {
        return superClass;
    }
    public void openMethod() {
        superClass.openMethod();
    }
    private class MySuperClass extends SuperClass {
        public void openMethod() {
            ...
        }
    }
}

// File SuperClass.java UNCHANGED
public abstract class SuperClass {
    public static final int CONSTANT=0;
    public abstract void openMethod();
    public void secretMethod() {
        ...
    }
}

要用委派替換繼承,請按照下列步驟操作:

  1. 選擇要在 "項目" 工具窗口中重構(gòu)的類,或打開此類進行編輯,并將插入符號放在類的源代碼中。
  2. 在主菜單或選擇的上下文菜單上,選擇:重構(gòu)| 用委托來代替繼承(Refactor | Replace Inheritance With Delegation)。

    將打開 "用委托替換繼承" 對話框。

  3. 在“用委托替換繼承”字段中,選擇父對象(將替換的繼承)。
  4. 指定新內(nèi)部類的字段的名稱。
  5. 在 "內(nèi)部類名" 字段中,指定內(nèi)部類定義的名稱。
  6. 在 "委托成員" 字段中,選擇父類的成員,將通過內(nèi)部類委托。
  7. 要為內(nèi)部類創(chuàng)建一個 getter,請選擇要通過內(nèi)部類委派的父類的成員。
  8. 要查看預(yù)期的更改并在重構(gòu)之前進行最終更正,請單擊“預(yù)覽”。要立即應(yīng)用更改,請單擊 “重構(gòu)”。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號