1. 程式人生 > >設計模式-介面卡模式

設計模式-介面卡模式

     介面卡模式也是常用到的設計模式,算是一種補償模式,用來在系統後期擴充套件修改時使用,在詳細設計階段不適合使用;會先簡單介紹下介面卡模式,以及它的幾個部分,最後通過一個例子來簡單演示下;

1.定義

    將一個類的介面轉換為希望的另一個介面,介面卡模式使得原來由於不相容而不能一起工作的類可以一起工作;我的理解是,某個類原來沒有某種功能,現在希望提供這種功能,那麼會將原來的功能,做一個轉換處理,來適配新的介面;

2.組成部分

1>Target:期待的介面或者功能,也就是希望原來的類具有的功能;

2>源Adaptee:原來的類,這個類中沒有提供Target的功能介面;所以我們需要做一些轉換;

3>介面卡Adapter:介面卡類是介面卡模式的核心,通過介面卡把原來的類做一些轉換處理,使得具有目標的介面功能;

3.例子

1>Target介面

public interface Target {
    void request();
}

這個是目標介面,我們的類需要有得功能

2>Adapee

public class Adaptee {
    public void specificRequest() {
        System.out.println("特殊請求,這個是源角色");
    }
}

原來的類,這個類有自己的功能,但是不具有目標的功能

3>介面卡類Adapter

public class Adapter extends Adaptee implements Target {
    @Override
    public void request() {
        super.specificRequest();
    }

    public static void main(String[] args) {
        Target adapter = new Adapter();
        adapter.request();
    }
}

這裡介面卡類繼承了Adaptee類,並實現Target中的介面;

還有一種寫法,不需要繼承的,通過構造的時候引用一個例項

public class Adapter implements Target {

    private Adaptee adaptee;

    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    @Override
    public void request() {
        this.adaptee.specificRequest();
    }

    public static void main(String[] args) {
        Adaptee adaptee = new Adaptee();
        Target adapter = new Adapter(adaptee);
        adapter.request();
    }
}

總結:設配器模式看起來還是很簡單的,它是一種補償模式,通過引入新的介面卡類,滿足功能,而不用修改原來的類,遇到具體的需求再做分析;