UML

對(duì)象適配器模式
代碼實(shí)現(xiàn)
需要被適配的類【電源】
適配類【充電器】
定義適配功能的接口【變壓器功能】
需要用到適配功能的類【手機(jī)-充電時(shí)】
測(cè)試類【AdapterTest】
需要被適配的類【電源】
package com.yuan.dp.adapter;
/**
* 提供電源
* @author Yuan-9826
*/
public class 電源 {
/**
* 提供的電源
*/
private int POWER = 220;
public int getPOWER() {
return POWER;
}
}
適配類【充電器】
package com.yuan.dp.adapter;
/**
* 充電器實(shí)現(xiàn)類
*
* @author Yuan-9826
*/
public class 充電器 implements 充電功能接口 {
/**
* 被適配類
*/
電源 power;
public 充電器(電源 power) {
this.power = power;
}
@Override
public int inToOut() {
if (power != null) {
//流入充電器的電壓
System.out.println("輸入的電壓是 " + power.getPOWER() + "伏");
try {
Thread.sleep(1000);
System.out.println("經(jīng)過了很復(fù)雜的處理......");
Thread.sleep(1000);
int newPower = 5;
System.out.println("輸出的電壓是 " + power + "伏");
return newPower;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return -1;
}
}
定義適配功能的接口【變壓器功能】
package com.yuan.dp.adapter;
/**
* 定義充電器應(yīng)有的功能
* @author Yuan-9826
*/
public interface 充電功能接口 {
/**
* @return 輸出電壓
*/
int inToOut();
}
需要用到適配功能的類【手機(jī)-充電時(shí)】
package com.yuan.dp.adapter;
/**
* 手機(jī)需要充電 需要直連電源充電
*
* @author Yuan-9826
*/
public class 手機(jī) {
充電器 charger;
public 手機(jī)(充電器 charger) {
this.charger = charger;
}
/**
* 充電方法
*/
void charge() {
int power = charger.inToOut();
if (power > 5) {
System.out.println("充電電壓 > 5V,手機(jī)爆炸了");
} else if (power < 5) {
System.out.println("充電電壓 < 5V,手機(jī)依然沒電");
} else {
System.out.println("手機(jī)用5伏電壓正常充電啦~");
}
}
}
測(cè)試類【AdapterTest】
package com.yuan.dp.adapter;
public class AdapterTest {
public static void main(String[] args) {
/**
* 自帶220v電壓
*/
電源 powerSupply = new 電源();
充電器 charger = new 充電器(powerSupply);
手機(jī) phone = new 手機(jī)(charger);
phone.charge();
}
}