Android設計模式之適配器模式--adapter

適配器模式的定義是:將一個類的接口,轉換成客戶指望的另外一個接口,適配器讓本來接口不兼容的類能夠做無間。看下如下兩張圖就更清楚了java

\

\

適配器能夠實現接口的解耦,若是過一段時間後,廠家想改變接口,適配器能夠把改變的部分封裝起來,用戶就不須要跟着接口改變而改變,只要改變適配器就好了。ide

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

Duck.java鴨子接口this

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.javaclass

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

}

因爲是要把火雞轉成鴨子,因此須要實現鴨子接口,和鴨子實現類有相同的方法,傳入須要適配的對象(火雞)List

 

測試代碼方法

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

 

這裏只是舉例一個很簡單的例子,很簡單理解。其實在Android開發中不少地方都用到適配器模式,好比ListView,viewPager等等。結合這些,你就更容易搞懂他了。

相關文章
相關標籤/搜索