天天看點

擴充卡模式Adapter-經典結構-JAVA實作

經典結構:

擴充卡模式Adapter-經典結構-JAVA實作

JAVA UML類圖:

擴充卡模式Adapter-經典結構-JAVA實作

實作源碼及說明:

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();
}