編輯:關於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(-------------------------------------------------);
}
}
Android中Serializable和Parcelable序列化對象詳解
本文詳細對Android中Serializable和Parcelable序列化對象進行學習,具體內容如下學習內容:1.序列化的目的2.Android中序列化的兩種方式3.
android事件分發流程
1.描述說到android事件的分發機制,真的是感覺既熟悉又陌生,因為每次需要用到的時候查看相關的源碼,總能找到一些所以然來,但是要根據自己理解從頭到尾說一遍,卻一點都說
Android UI設計: 仿QQ好友列表分組懸停,自定義Header,下拉刷新結合Demo
之前學習了Pulltorefresh,pinnedheaderexpanablelistview 但是結合起來還是有點麻煩的。尤其是像QQ這種。他不是單純的第一個當做分組
Android Studio發布應用
(1)Android Studio菜單Build->Generate Signed APK(2)彈出窗口(3)創建密鑰庫及密鑰,創建後會自動選擇剛創建的密鑰庫和密鑰