1. 程式人生 > >android設計模式——介面卡模式

android設計模式——介面卡模式

 

 

定義:介面卡模式就是把一個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配的而無法工作的兩個類能夠一起工作

使用場景:

  1. 系統要使用現有的類,但此類的介面不符合系統的需要,即介面不相容。
  2. 想要建立一個可以重複使用的類,用於與一些彼此之間沒有太大關係的一些類,包括一些可能在將來引進的類一起工作
  3. 需要一個統一的輸出介面,而輸入端的類的型別不可預知

應用舉例:美國電器 110V,中國 220V,就要有一個介面卡將 110V 轉化為 220V。

類圖:

  1. Traget,目標角色,也就是所期待的介面
  2. Adaptee,需要適配的介面
  3. Adapter,介面卡角色,把源介面轉換成目標介面,必須是具體的類

關鍵程式碼:介面卡繼承或依賴已有的物件,實現想要的目標介面。

優點:

  1. 可以讓任何兩個沒有關聯的類一起執行。
  2. 提高了類的複用。
  3. 增加了類的透明度。
  4. 靈活性好。

缺點:

  1. 過多地使用介面卡,會讓系統非常零亂,不易整體進行把握。比如,明明看到呼叫的是 A 介面,其實內部被適配成了 B 介面的實現,一個系統如果太多出現這種情況,無異於一場災難。因此如果不是很有必要,可以不使用介面卡,而是直接對系統進行重構。
  2. 由於 JAVA 至多繼承一個類,所以至多隻能適配一個適配者類,而且目標類必須是抽象類。

 

interface FiveVolt {
	public int getVolt5();
}
//需要適配的介面
 class Volt220{
	 public int getVolt220() {
		 return 220;
	 }
	 
 }
 //介面卡
 class VoltAdapter extends Volt220 implements FiveVolt{
	

	@Override
	public int getVolt5() {
		// TODO 自動生成的方法存根
		return 5;
	}
 }
public static void main(String[] args) {
		
		
		VoltAdapter adapter = new VoltAdapter();
		System.out.println("輸出電壓:"+adapter.getVolt5());
				
	}