Android設計模式(十四)--適配器模式

來源:互聯網
上載者:User

標籤:android   設計模式   listview   

悲劇面試題:

簡單談談你對Android中的適配器模式;

Adapter有哪些Adapter?

畫出Adapter 的類圖;


只有面試的時候才知道自己能力如何;

只有面試的時候才能更清晰的知識自己哪些不足;

既然不足那就補上。


適配器模式:


1、定義:

將一個介面轉化為客戶希望的另外一個介面;


2、目的:

Adapter模式使得原本由於介面不相容而不能一起工作的類可以一起工作了。


3、使用:

     3.1、兩個類所做的事情相同或者是相似,但具有不通的介面使用時,當雙方都不易於修改的時候,使用適配器模式;

     3.2、系統已經擁有的類,但是不符合需要;

     3.3、彼此沒有特別的關聯的類需要共同完成操作;


4、分類:

      4.1、類適配器;

      4.2、對象適配器;

在java 中類適配器的本質,就是使用的繼承與多態;

類適配器用與單一的資料來源,是由於java 的單繼承模式造成的

對象適配器可以適配多個資料來源,彌補類適配器的不足;但是需要避免資料來源過多時造成的分支過多,結構不清晰的問題;


5、優點:

     5.1、複用性好:對於已有的類在不改變原有的結構情況下,更好的複用;

     5.2、拓展性:適配器中可以更好的拓展;


6、缺點:

     造成系統邏輯混亂,適配器模式在某種情況下說,是不得不使用的情況下才會使用;否則若是設計好的介面就不需要適配了!


7、描述對象適配器:

目標介面:

package com.example.demo.Adapter;/** * 目標介面 * @author qubian * @data 2015年6月19日 * @email [email protected] * */public interface Target {public void function1();public void function2();}

已經存在的資料類:

這個如果是抽象類別,並且繼承Target就算是一種預設的適配器模式

package com.example.demo.Adapter;/** * 已經存在的類 * @author qubian * @data 2015年6月19日 * @email [email protected] * */public class BaseAdapter {public void function1(){}}

適配器:

package com.example.demo.Adapter;/** * 適配器 * @author qubian * @data 2015年6月19日 * @email [email protected] * */public class Adapter extends BaseAdapter implements Target{@Overridepublic void function2() {}}




8、對象適配器:

目標對象:

package com.example.demo.Adapter.ObjAdapter;/** * 目標對象 * @author qubian * @data 2015年6月19日 * @email [email protected] * */public class Obj {public void function1(){}public void function2(){}}package com.example.demo.Adapter.ObjAdapter;/** * 目標對象 * @author qubian * @data 2015年6月19日 * @email [email protected] * */public class Obj2 {public void function3(){}public void function4(){}}
適配器:

package com.example.demo.Adapter.ObjAdapter;public class Adapter {private Obj obj;private Obj2 obj2;public Adapter(Obj obj){this.obj=obj;}public void setObj2(Obj2 obj2) {this.obj2 = obj2;}public void function1(){this.obj.function1();}public void function3(){if (this.obj2!=null) {this.obj2.function3();}}}


9、Android中的適配器:

在Android 中,我們所用到的ListView ,書寫自己的Adapter,來適配視圖,就是一種適配器模式。


抽象類別BaseAdapter 實現了 ListAdapter 和 SpinnerAdapter 兩個介面,這兩個介面都繼承自 Adapter 介面。


Adapter 的類圖:



簡單的說:我們寫的適配器(MyListAdapter) 就是正對目標介面(BaseAdpter)對資料來源(ListView)進行相容修飾;也是一種預設的適配器模式;







Android設計模式(十四)--適配器模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.