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