什么是適配器模式
當(dāng)你想使用一個(gè)類(lèi)的時(shí)候瓜贾,但是這個(gè)類(lèi)的接口跟你又不一樣天揖,不能拿來(lái)直接用撑柔,這個(gè)時(shí)候就需要一個(gè)適配器來(lái)幫你了帆吻。
適配器類(lèi)圖
Class: void setPlugin(cnPlugin:CnPluginInterface); void charge();
Interface: CnPluginInterface -> void chargeWith2Pins();
Class: CnPlugin -> void chargeWith2Pins();
Class: PluginAdapter -> enPlugin: EnPluginInterface; void chargeWith2Pins();
Interface: EnPluginInterface -> void chargeWith3Pins();
Class: EnPlugin -> void chargeWith3Pins();
示例代碼
public interface CnPluginInterface {
void chargeWith2Pins();
}
public class CnPlugin implements CnPluginInterface{
@Override
public void chargeWith2Pins() {
System.out.println("charge with CnPlugin");
}
}
public class Home {
private CnPluginInterface cnPlugin;
public Home() {
}
public Home(CnPluginInterface cnPlugin) {
this.cnPlugin = cnPlugin;
}
public void setPlugin(CnPluginInterface cnPlugin) {
this.cnPlugin = cnPlugin;
}
public void charge() {
cnPlugin.chargeWith2Pins();
}
}
public class CnTest {
public static void main(String[] args) {
CnPluginInterface cnPlugin = new CnPlugin();
Home home = new Home(cnPlugin);
home.charge();
EnPluginInterface enPlugin = new EnPlugin();
Home home1 = new Home();
PluginAdapter pluginAdapter = new PluginAdapter(enPlugin);
home1.setPlugin(pluginAdapter);
home1.charge();
}
}
1.適配器必須實(shí)現(xiàn)原有的舊的接口
2.適配器對(duì)象中持有對(duì)新接口的引用, 當(dāng)調(diào)用舊接口時(shí)播掷,將這個(gè)調(diào)用委托給實(shí)現(xiàn)新接口的對(duì)象來(lái)處理审编,也就是在適配器對(duì)象中組合一個(gè)新接口。
public interface EnPluginInterface {
void chargeWith3Pins();
}
public class EnPlugin implements EnPluginInterface{
@Override
public void chargeWith3Pins() {
System.out.println("charge with EnPlugin");
}
}
public class PluginAdapter implements CnPluginInterface{
private EnPluginInterface enPlugin;
@Override
public void chargeWith2Pins() {
enPlugin.chargeWith3Pins();
}
public PluginAdapter(EnPluginInterface enPlugin) {
this.enPlugin = enPlugin;
}
}
運(yùn)行結(jié)果:
適配器模式.png
適配器模式的應(yīng)用
只要就是在舊的接口歧匈、新的接口之間完成適配垒酬。
適配器模式的三個(gè)特點(diǎn):
- 適配器對(duì)象實(shí)現(xiàn)原有接口
- 適配器對(duì)象組合一個(gè)實(shí)現(xiàn)新接口的對(duì)象(這個(gè)對(duì)象也可以不實(shí)現(xiàn)一個(gè)對(duì)象,只是一個(gè)單純的對(duì)象)
- 對(duì)適配器原有接口方法的調(diào)用委托給新接口的實(shí)例的特定方法
適配器模式到此結(jié)束