1. 介紹
1.1 定義
將一個(gè)類(lèi)的接口轉(zhuǎn)換成客戶(hù)期望的另一個(gè)接口
應(yīng)用實(shí)例: 電源適配器
1.2 主要作用
使原本接口不兼容的類(lèi)可以一起工作
1.3 形式
適配器模式的形式分為:類(lèi)的適配器模式 & 對(duì)象的適配器模式
2.模式原理
public interface Target {
void request();
}
public class ConcreteTarget implements Target {
@Override
public void request() {
System.out.println("concreteTarget現(xiàn)有目標(biāo)方法");
}
}
public class Adaptee {
public void adapteeRequest() {
System.out.println("被適配者的方法");
}
}
2.1類(lèi)的適配器模式
繼承Adaptee 被適配者
public class Adapter extends Adaptee implements Target {
@Override
public void request() {
//...
super.adapteeRequest();
//...
}
}
2.2對(duì)象的適配器模式
組合Adaptee 被適配者
public class Adapter implements Target{
private Adaptee adaptee = new Adaptee();
@Override
public void request() {
//...
adaptee.adapteeRequest();
//...
}
}
客戶(hù)端調(diào)用
public class Test {
public static void main(String[] args) {
Target target = new ConcreteTarget();
target.request();
Target adapterTarget = new Adapter();
adapterTarget.request();
}
}
結(jié)果輸出
concreteTarget目標(biāo)方法
被適配者的方法
3.實(shí)例講解
接下來(lái)我用一個(gè)實(shí)例來(lái)對(duì)代理模式進(jìn)行更深一步的介紹剪侮。
實(shí)例概況 220v交流電通過(guò)電源適配器輸出5v直流電
步驟1:創(chuàng)建Target 接口 5v直流電
public interface DC5 {
int outputDC5V();
}
步驟2:創(chuàng)建Adaptee被適配者 220v交流電
public class AC220 {
public int outputAC220V(){
int output = 220;
System.out.println("輸出交流電"+output+"V");
return output;
}
}
步驟3:創(chuàng)建Adapter 電源適配器
//使用對(duì)象的適配器模式
public class PowerAdapter implements DC5{
private AC220 ac220 = new AC220();
@Override
public int outputDC5V() {
int adapterInput = ac220.outputAC220V();
//變壓器...
int adapterOutput = adapterInput/44;
System.out.println("使用PowerAdapter輸入AC:"+adapterInput+"V"+"輸出DC:"+adapterOutput+"V");
return adapterOutput;
}
}
步驟4:客戶(hù)端調(diào)用
public class Test {
public static void main(String[] args) {
DC5 dc5 = new PowerAdapter();
dc5.outputDC5V();
}
}
結(jié)果輸出
輸出交流電220V
使用PowerAdapter輸入AC:220V 輸出DC:5V