經典結構:
JAVA UML類圖:
實作源碼及說明:
Client.java
package com.pattern.adapter;
/*
* 用戶端類(手機)
* main邏輯中處理:手機-》miniUSB接口-》miniUSB與USB擴充卡-》USB5v電源輸入,擷取電量
* 其中分為類擴充卡與對象擴充卡
* @author yuanwm
*
*/
public class Client {
public void DoRequest(Target ObTarget) {
ObTarget.Request();
}
public static void main(String[] args) {
Client computerClient = new Client();
//類擴充卡
AdapterClass pspToUsbClassAdapter = new AdapterClass();
System.out.println("類适配充電:");
computerClient.DoRequest(pspToUsbClassAdapter);
Adaptee pspKeyboardAdaptee = new Adaptee();
//對象配器
System.out.println("類适配充電:");
AdapterObject pspToUsbObjectAdapter = new AdapterObject(pspKeyboardAdaptee);
computerClient.DoRequest(pspToUsbObjectAdapter);
}
}
Adaptee.java
package com.pattern.adapter;
/*
* 被适配的類(USB5v電源輸入)
* @author yuanwm
*
*/
public class Adaptee {
public void SpecificRequest() {
System.out.println("USB5v電源輸入");
}
}
AdapterClass.java
package com.pattern.adapter;
/*
* 類擴充卡實作(miniUSB與USB擴充卡)
* @author yuanwm
*
*/
public class AdapterClass extends Adaptee implements Target{
/*
* 類擴充卡-通過繼承的方式
* Java為單繼承,是以一個類的繼承機會隻有一次;是以,不建議使用這種方式。
*/
@Override
public void Request() {
// TODO Auto-generated method stub
super.SpecificRequest();
}
}
AdapterObject.java
package com.pattern.adapter;
/*
* 對象擴充卡實作(miniUSB與USB擴充卡)
* @author yuanwm
*
*/
public class AdapterObject implements Target{
/**
* 對象擴充卡,通過對象組合的方式
*/
private Adaptee objectAdaptee;
public AdapterObject(Adaptee inAdaptee) {
super();
this.objectAdaptee = inAdaptee;
}
@Override
public void Request() {
// TODO Auto-generated method stub
objectAdaptee.SpecificRequest();
}
}
Target.java
package com.pattern.adapter;
/*
* 需要适配的接口(miniUSB接口)
* @author yuanwm
*
*/
public interface Target {
public void Request();
}