Java常用設計模式--適配器模式(Adapter Pattern)

適配器模式(Adapter Pattern)是作爲兩個不兼容的接口之間的橋樑。這種類型的設計模式屬於結構型模式,它結合了兩個獨立接口的功能。

組成結構

  1. 客戶 (Client):客戶類。
  2. 目標接口(Target):客戶所期待的接口。目標可以是具體的或抽象的類,也可以是接口。
  3. 適配者(Adaptee):需要適配的類或適配者類。
  4. 適配器(Adapter):通過包裝一個需要適配的對象,把原接口轉換成目標接口。

舉個例子:

電腦的電源是兩孔的,現在牆上的插座是三孔,這時就需要一個三控插座轉兩孔插座的轉接器

分析:

三孔插座是目標接口

二孔插座是適配者

三控轉兩孔轉接器是適配器

上代碼:

三控插座

package com.example.adapter;

/**
 * 三控插座
 */
public class SocketThree {

    public void insert(ThreeToTwoAdapter threeToTwoAdapter){
        threeToTwoAdapter.handRquest();
    }

}

二孔插座

package com.example.adapter;

/**
 * 二孔插座想插入三控插座但是插入不了
 */
public class SocketTwo {

    public void request(){
        System.out.println("我是二孔插座,我已經通過適配器插入三控插座");
    }

}

適配器接口

package com.example.adapter;

/**
 * 接口三控轉兩孔轉換器抽象
 */
public interface ThreeToTwoAdapter {

    void handRquest();

}

適配器接口實現

 

package com.example.adapter;

/**
 * 需要連接二孔插座和三孔插座的適配器
 */
public class ThreeToTwoAdapterImpl implements ThreeToTwoAdapter {

    private SocketTwo socketTwo;

    public ThreeToTwoAdapterImpl(SocketTwo socketTwo) {
        this.socketTwo = socketTwo;
    }

    @Override
    public void handRquest() {
        socketTwo.request();
    }
}

測試類

package com.example.adapter;

public class Test {

    public static void main(String[] args) {
        //兩孔插座
        SocketTwo socketTwo = new SocketTwo();
        //三控插座
        SocketThree socketThree = new SocketThree();
        //兩孔插座連接適配器
        ThreeToTwoAdapterImpl threeToTwoAdapterImpl = new ThreeToTwoAdapterImpl(socketTwo);
        //將配器插入三控插座
        socketThree.insert(threeToTwoAdapterImpl);
    }

}

測試結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章