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

2018-11-10 10:26 更新

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

用委托替換繼承重構(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() {
        ...
    }
}

要用委派替換繼承,請(qǐng)按照下列步驟操作:

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

    將打開(kāi) "用委托替換繼承" 對(duì)話框。

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)