1. 程式人生 > >Java設計模式 —— 介面卡模式(Adapter)

Java設計模式 —— 介面卡模式(Adapter)

ADAPTER—在朋友聚會上碰到了一個美女Sarah,從香港來的,可我不會說粵語,她不會說普通話,只好求助於我的朋友kent了,他作為我和Sarah之間的Adapter,讓我和Sarah可以相互交談了(也不知道他會不會耍我)

介面卡(變壓器)模式:把一個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面原因不匹配而無法一起工作的兩個類能夠一起工作。適配類可以根據引數返還一個合適的例項給客戶端。

在原型別不做任何改變的情況下,用一個介面卡類把一個介面轉成另一個介面,擴充套件了新的介面,靈活且多樣的適配一切舊俗。

這種打破舊框框,適配新格局的思想,是面向物件的精髓。

以繼承方式實現的類的 Adapter模式和以聚合方式實現的物件的Adapter模式,各有千秋,各取所長。

package adapter;

/*
 * 介面卡模式 (Adapter)
 */
public class TestAdapter {
	public static void main(String[] args) {
		USB mouse = new Mouse();
		PC pc = new PC();
		PS2 adapter = new USB2PS2Adapter(mouse);
		pc.useMouse(adapter);
	}
}

interface PS2 {
	void usePs2();
}

interface USB {
	void useUsb();
}

class Mouse implements USB {
	public void useUsb() {
		System.out.println("通過USB介面工作");
	}
}

class PC {
	public void useMouse(PS2 ps2Mouse) {
		ps2Mouse.usePs2();
	}
}

class USB2PS2Adapter implements PS2 {
	private USB usb;
	public USB2PS2Adapter(USB usb) {
		this.usb = usb;
	}
	public void usePs2() {
		System.out.println("把對usePS2的方法呼叫轉換成對useUSB的方法呼叫");  
		usb.useUsb();
	}
}