適配器設計模式


什么是適配器

在設計模式中,適配器模式(英語:adapter pattern)有時候也稱包裝樣式或者包裝(wrapper)。將一個類的接口轉接成用戶所期待的。一個適配使得因接口不兼容而不能在一起工作的類工作在一起,做法是將類自己的接口包裹在一個已存在的類中。

適配器分類

適配器分為,類適配器、對象適配、接口適配方式

類適配器方式采用繼承方式,對象適配方式使用構造函數傳遞

適配器應用場景

我們根據上面的適配器的特點的介紹中,我們來分析下適配器模式的幾類比較適用的使用場景:

1、我們在使用第三方的類庫,或者說第三方的API的時候,我們通過適配器轉換來滿足現有系統的使用需求。

 2、我們的舊系統與新系統進行集成的時候,我們發現舊系統的數據無法滿足新系統的需求,那么這個時候,我們可能需要適配器,完成調用需求。

 3、我們在使用不同數據庫之間進行數據同步。(我這里只是分析的是通過程序來說實現的時候的情況。還有其他的很多種方式[數據庫同步])。

OutputStreamWriter:是Writer的子類,將輸出的字符流變為字節流,即:將一個字符流的輸出對象變為字節流的輸出對象。

InputStreamReader:是Reader的子類,將輸入的字節流變為字符流,即:將一個字節流的輸入對象變為字符流的輸入對象。

SpringMVC 適配器

適配器案例

我們就拿日本電飯煲的例子進行說明,日本電飯煲電源接口標准是110V電壓,而中國標准電壓接口是220V,所以要想在中國用日本電飯煲,需要一個電源轉換器。

定義日本和中國兩種接口及其實現

我們先定義日本220V電源接口和實現。

package com.example.demo.adapter;

/**
* 中國220V 電源接口
*/
public interface China220VInterface {
public void connect();
}

package com.example.demo.adapter;

/**
* 中國電壓220V 電源
*/
public class China220VInterfaceImpl implements China220VInterface {
@Override
public void connect() {
System.out.println("中國220V電源開始工作...");
}
}

package com.example.demo.adapter;

/**
* 日本110V 電壓接口
*/
public interface JP110VInterface {
/**
* 電源接口
*/
void connect();
}

package com.example.demo.adapter;

/**
* 日本 110V 電源接口實現類
*/
public class JP110VInterfaceImpl implements JP110VInterface {
@Override
public void connect() {
System.out.println("日本110V 電源接口開始工作...");
}
}
package com.example.demo.adapter;

/**
* 電飯煲接口
*/
public class ElectricCooker {
private JP110VInterface ap110VInterface;

public ElectricCooker(JP110VInterface ap110VInterface){
this.ap110VInterface=ap110VInterface;
}

public void work(){
// 電源方法執行
ap110VInterface.connect();
System.out.println("電飯煲開始工作...");
}
}
package com.example.demo.adapter;

/**
* 電源適配器
*/
public class PowerAdapter implements JP110VInterface {
private China220VInterface china220VInterface;

public PowerAdapter(China220VInterface china220VInterface){
this.china220VInterface=china220VInterface;
}

@Override
public void connect() {
china220VInterface.connect();
}
}
package com.example.demo.adapter;

/**
* 測試
*/
public class AdapterTest {
public static void main(String[] args) {
//220V 電源接口
China220VInterface china220VInterface=new China220VInterfaceImpl();
//適配器接口
PowerAdapter powerAdapter=new PowerAdapter(china220VInterface);
//電飯煲工作
ElectricCooker electricCooker=new ElectricCooker(powerAdapter);
electricCooker.work();

}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM