Adapter模式

package JAVABasic;

/**
 * 1、目標(Target):這就是所期待獲得的接口。
 * 2、源(Adaptee):現有須要適配的接口。
 * 3、適配器(Adapter):適配器類是本模式的核心。適配器把源接口轉換成目標接口。 
 * @author markGao
 *
 */
public class AdapterMode {
    public static void main(String[] args) {
        Target a = new Adapter();
        a.sampleOperation1();
        a.sampleOperation2();
    }

}

class Adaptee {
    public void sampleOperation1() {
        System.out.println("方法名       "
                + Thread.currentThread().getStackTrace()[1].getMethodName());
        System.out.println("類名    "
                + Thread.currentThread().getStackTrace()[1].getClassName());
    }
}

interface Target {
    /**
     * Class Adaptee contains operation sampleOperation1.
     */
    void sampleOperation1();

    /**
     * Class Adaptee doesn't contain operation sampleOperation2.
     */
    void sampleOperation2();
}

class Adapter extends Adaptee implements Target {
    /**
     * Class Adaptee doesn't contain operation sampleOperation2.
     */
    public void sampleOperation2() {
        // Write your code here
        System.out.println("文件名   "
                + Thread.currentThread().getStackTrace()[1].getFileName());
        System.out.println("所在的行數 "
                + Thread.currentThread().getStackTrace()[1].getLineNumber());

    }
}

在咱們實際生活中也很容易看到這方面的例子,好比咱們要和一個外國人打交道,例如韓國 人,若是咱們沒有學習過韓語,這個韓國人也沒有學習過咱們漢語,在這種狀況下,咱們之間是很難進行直接交流溝通。爲了達到溝通的目的有兩個方法:1)改造 這個韓國人,使其可以用漢語進行溝通;2)請一個翻譯,在咱們和這個韓國人之間進行語言的協調。顯然第一種方式——改造這個韓國人的代價要高一些,咱們不 僅要從新培訓他漢語的學習,還有時間、態度等等因素。而第二個方式——請一個翻譯,就很好實現,並且成本低,還比較靈活,當咱們想換個日本人,再換個翻譯 就能夠了。java


在GOF設計模式中,Adapter能夠分爲類模式和對象模式兩種,類模式經過多重繼承實現,對象模式經過委託實現。設計模式

在Java中因爲沒有多重繼承機制,因此要想實現類模式的Adapter,就要進行相應 的改變:經過繼承Adaptee類實現Target接口方式實現。這種改變存在兩個問題:1)Target必須是一個接口而不能是一個類,不然 Adapter沒法implements實現;2)Adapter是繼承Adaptee的實現,而不是私有繼承,這就表示Adapter是一個 Adaptee的子類。學習

相關文章
相關標籤/搜索