介面卡設計模式

Chengkai730發表於2024-09-11

設計模式(Design pattern)是一套被反覆使用、多數人知曉的、經過分類編目的、程式碼設計經驗的總結。使用設計模式是為了可重用程式碼、讓程式碼更容易被他人理解解、保證程式碼可靠性、程式的重用性。

簡單理解:設計模式就是各種套路。

介面卡設計模式:解決介面與介面實現類之間的矛盾問題

如果一個介面有很多個方法,但是某一個實現只需要使用到其中的某一個方法,那麼根據介面的語法,這個實現必須重寫這個介面的所有方法。這將導致程式碼維護和閱讀很麻煩。於是就有了介面卡這個設計模式。

介面卡是一個類,實現這個介面,重寫全部方法,但是所有方法都是空實現,即全部重寫了,但是全部都是空著的,沒有方法體。

再定義實現的時候,就不要去實現這個介面了,而是繼承這個介面卡,然後在類中,要用到哪個方法就重寫那一個方法就可以了。

介面卡的所有方法都是空實現,因此建立介面卡的物件是沒有任何意義的,因此將介面卡定義為抽象的,即用 abstract 來修飾,目的就是不讓外界來建立它的物件。

介面:

package demo6;

public interface Inter {
    public abstract void method1();

    public abstract void method2();

    public abstract void method3();

    public abstract void method4();

    public abstract void method5();

    public abstract void method6();

    public abstract void method7();

    public abstract void method8();

    public abstract void method9();

    public abstract void method10();
}

介面卡:

package demo6;

public abstract class InterAdapter implements Inter {  // 定義為抽象類, 不讓外界例項化這個類
    @Override
    public void method1() {

    }

    @Override
    public void method2() {

    }

    @Override
    public void method3() {

    }

    @Override
    public void method4() {

    }

    @Override
    public void method5() {

    }

    @Override
    public void method6() {

    }

    @Override
    public void method7() {

    }

    @Override
    public void method8() {

    }

    @Override
    public void method9() {

    }

    @Override
    public void method10() {

    }
}

類:

package demo6;

public class InterImpl extends InterAdapter {
    @Override
    public void method5() {
        System.out.println("重寫method5。");
    }
}

總結:

  1. 當一個介面中抽象方法過多,但是我只要使用其中一部分的時候,就可以介面卡設計模式。

  2. 書寫步驟:

    1. 編寫中間類 XXXAdapter,實現對應的介面。

    2. 對介面中的抽象方法進行空實現。

    3. 讓真正的實現類繼承中間類,並重寫需要用的方法。

    4. 為了避免其他類建立介面卡類的物件,中間的介面卡類用 abstract 進行修飾。

  3. 如果繼承中間類的類還有別的父類, 而 Java 不允許多繼承, 怎麼辦呢? 可以讓這個中間類, 即介面卡去繼承這個父類.

相關文章