適配器模式
將一個類的接口轉(zhuǎn)換成客戶希望的另一個接口。適配器模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。
OO設(shè)計原則:
- 面向接口編程
- 封裝變化
- 多用組合少用繼承
- 對修改關(guān)閉,對擴(kuò)展開放
public class AdapterDemo {
public static void main(String[] args) {
PowerA powerA = new PowerAImplA();
startA(powerA);
PowerB powerB = new PowerBImpl();
//startA(powerB); 報錯
//由于 startA 的參數(shù)為 PowerA 類型,此時需要適配
PowerAAdapter pAAdapter = new PowerAAdapter(powerB);
startA(pAAdapter);
}
public static void startA(PowerA powerA){
// ......
powerA.insert();
// ......
}
//與startA的內(nèi)容大部分重復(fù),故僅適用 startA() ,從而需要一個相應(yīng)的適配器,使得 PowerB 能使用 startA()
public static void startB(PowerB powerB){
// ......
powerB.connect();
// ......
}
}
//適配器Adapter核心代碼
class PowerAAdapter implements PowerA{
private PowerB powerB;// 要進(jìn)行適配的接口
public PowerAAdapter(PowerB powerB) {
this.powerB = powerB;
}
@Override
public void insert() {
powerB.connect();
}
}
/**
* 電源A接口
*/
interface PowerA{
public void insert();
}
class PowerAImplA implements PowerA{
@Override
public void insert() {
// TODO Auto-generated method stub
System.out.println("電源A接口插入,開始工作。");
}
}
/**
* 電源B接口
*/
interface PowerB{
public void connect();
}
class PowerBImpl implements PowerB{
public void connect(){
System.out.println("電源B接口已連接。");
}
}
[圖片上傳失敗...(image-ad66b8-1539494589661)]