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

Android 設計模式之適配器模式

編輯:關於Android編程

適配器模式的定義是:將一個類的接口,轉換成客戶期望的另一個接口,適配器讓原本接口不兼容的類可以作無間。看下以下兩張圖就更清楚了

\

\

適配器可以實現接口的解耦,如果過一段時間後,廠家想改變接口,適配器可以把改變的部分封裝起來,用戶就不需要跟著接口改變而改變,只要改變適配器就行了。

有這樣一個需求:有一個鴨子類和一個火雞類,我想用火雞對象來冒充鴨子,但火雞和鴨子的方法不完全一樣,這時就需要一個轉換器

Duck.java鴨子接口

 

package com.dzt.adapter;

public interface Duck {

	public void quack();

	public void fly();
}
Turkey.java火雞接口

 

 

package com.dzt.adapter;

public interface Turkey {

	public void gobble();

	public void fly();
}
實現一個鴨子類MallardDuck.java
package com.dzt.adapter;

public class MallardDuck implements Duck {

	@Override
	public void quack() {
		// TODO Auto-generated method stub
		System.out.println(MallardDuck------------------>quack);
	}

	@Override
	public void fly() {
		// TODO Auto-generated method stub
		System.out.println(MallardDuck------------------>fly);
	}

}
實現一個火雞類WildTurkey.java

 

 

package com.dzt.adapter;

public class WildTurkey implements Turkey {

	@Override
	public void gobble() {
		// TODO Auto-generated method stub
		System.out.println(WildTurkey------------------>gobble);
	}

	@Override
	public void fly() {
		// TODO Auto-generated method stub
		System.out.println(WildTurkey------------------>fly);
	}

}
要想把火雞轉成一個鴨子就要創建一個適配器TurkeyAdapter.java

 

 

package com.dzt.adapter;

/**
 * 可以把火雞轉化成鴨子
 * 
 * @author Administrator
 * 
 */
public class TurkeyAdapter implements Duck {

	Turkey turkey;

	public TurkeyAdapter(Turkey turkey) {
		this.turkey = turkey;
	}

	@Override
	public void quack() {
		// TODO Auto-generated method stub
		turkey.gobble();
	}

	@Override
	public void fly() {
		// TODO Auto-generated method stub
		for (int i = 0; i < 5; i++)
			turkey.fly();
	}

}
由於是要把火雞轉成鴨子,所以需要實現鴨子接口,和鴨子實現類有相同的方法,傳入需要適配的對象(火雞)

 

測試代碼

 

package com.dzt.adapter;

/**
 * 使用適配器模式 需求:由於找不到合適的鴨子,只能暫時到火雞來代替鴨子,但鴨子和火雞的方法不一樣,此時就需要用一個”中間人“進行轉換。
 * 
 * @author Administrator
 * @data 2014.08.19
 */
public class AdapterModel1 {

	public static void main(String[] args) {
		WildTurkey wildTurkey = new WildTurkey();
		MallardDuck mallardDuck = new MallardDuck();

		Duck adapter = new TurkeyAdapter(wildTurkey);
		System.out.println(turkey say..................);
		wildTurkey.gobble();
		wildTurkey.fly();
		System.out.println(duck say..................);
		mallardDuck.quack();
		mallardDuck.fly();
		System.out.println(adapter say..................);
		adapter.quack();
		adapter.fly();
		System.out.println(-------------------------------------------------);
	}
}
 
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved