Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開發之適配器模式初探

Android開發之適配器模式初探

編輯:關於Android編程

我們在開發Android的時候經常通過Adapter把數據和UI對象連接在一起,spinner、ListView之類的控件都可以用適配器來自定義其組建,使其更加豐富。適配器模式是將兩個不兼容的類糾合在一起使用,屬於結構型,需要有Adaptee(被適配者)和Adaptor(適配器)兩個身份。簡單的來說,就是你有一個機器人是只會踢足球的,另一個機器人只會打籃球的,然後你想有讓他既會踢足球又會打籃球,那他的芯片裡要將這兩種方法都集合在一起,可我們又不知道原來的踢足球和打籃球的方法是怎麼寫的,也不想改啊,也就是需要適配器模式,來把它們糅雜在一起啦。

適配器模式呢大致分為兩種,一種是組合的方式對象適配器,另一種是繼承的方式類適配器,其他還有各種衍生。

借助慕課網的教學ppt,我們來看一下什麼是對象適配器

\

對象適配器就是把一個“被適配者”作為一個對象組合到適配器類中,以修改目標接口包裝適配者,下面我們通過一個二相插頭和三相插頭的轉換電流例子來看一下這種模式的運用。

我們先來看一下使用場景,我們帶了一個筆記本和一個插座。

我們帶的筆記本

public class NoteBook {

	private ThreePlugIf  plug;
	
	public NoteBook(ThreePlugIf plug){
		this.plug = plug;
	}
	
	//使用插座充電
	public void charge(){
		plug.powerWithThree();
	}

筆記本三相電流的插口
public interface ThreePlugIf {
	
	//使用三相電流供電
	public void powerWithThree();
}
我們帶的插座
public class GBTwoPlug {
	
	//使用二相電流供電
	public void powerWithTwo(){
		System.out.println("使用二相電流供電");
	}
}
以上情況我們發現一個窘境,我們有一個筆記本必須使用三相電流,可我們只有二相電流插座,那怎麼辦呢,那我們就要一個轉換器啦。
public class TwoPlugAdapter implements ThreePlugIf {

	private GBTwoPlug plug;
	
	public TwoPlugAdapter(GBTwoPlug plug){
		this.plug = plug;
	}
	@Override
	public void powerWithThree() {
		System.out.println("通過轉化");
		plug.powerWithTwo();

	}

}
我們的適配器類繼承了三項插座接口,實現了其輸電方法,並將二相電流類作為參數對象傳入。我們怎麼使用這個適配器呢?
                 GBTwoPlug two =  new GBTwoPlug();
		ThreePlugIf three = new TwoPlugAdapter(two);
		NoteBook nb = new NoteBook(three);
		nb.charge();
		
答案就是我們用我們新的子類(適配器類)實例化父類(三相插座接口),新生成的對象可以調用子類的方法powerwithThree(),實現供電轉化。

那麼什麼是類適配器呢?

\

類適配器模式就是通過多重繼承不兼容接口,實現對目標接口的匹配,單一的唯某個類而實現適配的這樣一種模式。

public class TwoPlugAdapterExtends extends GBTwoPlug implements ThreePlugIf {

	@Override
	public void powerWithThree() {
		System.out.print("借助繼承適配器");
		this.powerWithTwo();

	}

}
看完適配器的兩種模式,我們來對比一下

類適配器只能為單一的某個類而實現,復用性較差

對象適配器可以為不同的對象實現適配,使用性較強!

我們Android開發中使用的適配器是他們的一個變形,大家可以閱讀下Android源代碼研究下,萬變不離其中嘛

\





  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved