在日常生活中出國常需要電壓轉接頭,接電壓轉換為另外一種該國家可用的電壓規格。今天要介紹的配置器就是有這樣的作用,可以將兩個不同的系統藉由配置器去符合其他系統的標準。
配接器模式定義
將兩個不同模組介面,利用配接器可以結合在一起。
配接器模式使用狀況
1.當兩個系統需要串接時,需要將資料轉換成另一個系統可以使用的規格 2.
配接器模式UML圖
Target: 目標介面,需要轉換資料的目標
Adapter : 配接器角色,負責轉換為目標介面
Adaptee: 需要轉換的角色
配接器模式種類
- Class Adapter(類別配接器): 利用繼承adaptee來完成配接器
- Obejct Adapter(物件配接器): 利用組合物件的方式完成配接器
配接器模式範例
我們建立Adaptee為120電壓,利用Adapter變壓器來轉換電壓。本範例類別與物件配接器都有實作。
GitHub: https://github.com/blackbryant/designpattern/tree/master/java/src/design/adapter
/**
* name: Volt.java
* description: 電壓物件
* Created by bryant on 2017/1/124
*/
public class Volt {
private float volt ;
public Volt(float volt){
this.volt = volt ;
}
//取得電壓
public float getV(){
return this.volt ;
}
}
/**
* name: IAdapter.java
* description: 變壓器介面
* Created by bryant on 2017/1/24.
*/
public interface IAdapter {
public float convertVolt(float rate) ;
}
/**
* name: Adaptee.java
* description: 傳統變壓器
* Created by bryant on 2017/1/24.
*/
public class Adaptee {
public Volt getVolt(){
return new Volt(120) ;
}
}
/**
* name: Adapter.java
* description: 變壓器實作(類別配接器)
* Created by bryant on 2017/1/24.
*/
public class Adapter extends Adaptee implements IAdapter {
@Override
public float convertVolt( float rate) {
return getVolt().getV() * rate ;
}
}
/**
* name: AdapterComposition.java
* description: 組合式變壓器
* Created by bryant on 2017/1/24.
*/
public class AdapterComposition implements IAdapter{
private Adaptee adaptee = new Adaptee();
@Override
public float convertVolt(float rate) {
return adaptee.getVolt().getV()*rate;
}
}
/**
* name: AdapterDemo.java
* description: 變壓器Demo
* Created by bryant on 2017/1/24.
*/
public class AdapterDemo {
public static void main(String[] args) {
//Class Adapter
Adapter adapter = new Adapter();
System.out.println(adapter.convertVolt(0.5f));
//Object Adapter
AdapterComposition adapterCompsition = new AdapterComposition() ;
System.out.println(adapterCompsition.convertVolt(0.2f));
}
}
執行結果 :
60.0
24.0

留言
張貼留言