擴充卡模式
定義:
将一個類的接口轉換成客戶希望的另一個接口,Adapter模式使得原本由于接口不相容不能一起工作的那些類可以一起工作。
應用場景:
系統需要使用現有類,而這些類不符合系統系統的接口。
使用第三方元件,元件接口定義和自己定義不同,不希望修改自己的接口,但是要使用第三方元件接口的功能。
優點:
符合單一職責原則,符合開閉原則。
代碼示例:
擴充卡模式主要分三類:類的擴充卡模式、對象的擴充卡模式、接口的擴充卡模式。
生活當中,手機的電源擴充卡就是很好的列子。标準電壓是220V,二手機可能隻需要5V電壓就夠了,電源擴充卡就可用将220V電壓轉成5V電壓。
目标接口(Target):客戶所期待的接口。目标可以是具體的或抽象的類,也可以是接口。
需要适配的類(Adaptee):需要适配的類或适配者類。
擴充卡(Adapter):通過包裝一個需要适配的對象,把原接口轉換成目标接口。
對象的擴充卡模式:
package com.test;
public class ObjectAdapter {
public static void main(String[] args) {
Target target = new Adapter(new Adaptee());
target.output5v();
}
}
class Adaptee{
public int output220v(){
return 220;
}
}
interface Target{
int output5v();
}
class Adapter implements Target{
private Adaptee adaptee;
public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
public int output5v() {
int output220v = adaptee.output220v();
System.out.println("原始電壓:"+output220v+"---輸出電壓:"+5);
return 5;
}
}
類的擴充卡模式:
package com.test.v;
public class ClassAdapter {
public static void main(String[] args) {
Adapter adapter = new Adapter();
adapter.output5v();
}
}
class Adaptee{
public int output220v(){
return 220;
}
}
interface Target{
int output5v();
}
class Adapter extends Adaptee implements Target{
public int output5v() {
int output220v = output220v();
System.out.println("原始電壓:"+output220v+"---輸出電壓:"+5);
return 5;
}
}