Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 適配器模式在android中使用

適配器模式在android中使用

編輯:關於Android編程

適配器模式(Adapter):

適配器模式是一種行為模式,它可以把一個類的接口轉換成為另一個所期待的另一種接口,這樣可以使原本因接口無法在一起工作的兩個類能夠在一起工作了。適配器模式有類的適配器和對象的適配器兩種形式,這裡只介紹對象的適配器模式(與類適配器模式類似),下面為類的適配器(左)和對象適配器模式(右)的簡略類圖結構:

 

\

適配器模式所涉及的角色有適配角色、目標角色和適配器角色,具體描述如下:

適配角色:提供需要適配轉換的接口角色。

目標角色:調用者所期待的接口。

適配器角色:把適配角色轉為目標角色的接口。

 

與之前一樣,我們同樣列舉一個實例來說明適配器模式的使用。在電商平台中,查詢商品、查看商品詳情、添加購物車和支付是最常見不過了。假如原系統中已經實現了商品的查詢、添加購物車以及支付功能,查詢功能包括查詢商品、查看詳情、以及計算商品總價;添加購物車包括查看詳情、商品添加購物車以及支付,目前這兩個模塊功能是不協同工作的,所以下面我們將會把購物車適配成為可以與查看商品一起工作,實現他們的一體化操作。那麼他們的詳細結構類圖如下所示:

\

好了,下面羅列下適配器模式的核心代碼。

目標角色(SaleShopCenter):

/**

* @description :

* 目標對象

*/

public interfaceSaleShopCenter {

 

ListscanSaleItems(String pKey);

 

SalescanSaleDetail(String pId);

 

double calculateTotalPrice();

 

}

 

適配角色(ShoppingCart):

/**

* @description :

* 適配的對象

*/

public class ShoppingCart {

private Salesale =null;

public staticList results =null; // 模擬緩存數據ß

 

public Sale scanSaleDetail(StringpId) {

// 異步請求網絡

// TODO

 

// 這裡模擬實現

sale = getSale(pId);

return sale;

}

 

public voidaddSaleShoppingCart(List sales) {

// 異步請求網絡

// TODO

 

addCart(sales);

}

 

public booleanbillPay(List sales) {

// 異步請求網絡

// TODO

 

// 這裡模擬支付成功

booleanpayStatus =true;

if(null ==SaleShoppingManager.results

||0 > SaleShoppingManager.results.size()) {

payStatus = false;

}

return payStatus;

}

 

private Sale getSale(StringpId) {

if(null ==SaleShoppingManager.results

||0 > SaleShoppingManager.results.size()) {

return null;

}

 

Salesale = null;

for(Saleitem : SaleShoppingManager.results) {

if(item.getpID().equals(pId)) {

sale = item;

}

}

 

return sale;

}

 

private voidaddCart(List sales) {

results = sales;

}

}

適配器角色(SaleShoppingManager):

/**

* @description :

* 適配器對象角色

*/

public classSaleShoppingManager implementsSaleShopCenter {

private ShoppingCartcart =null;

public staticList results =null; // 模擬緩存數據

 

public SaleShoppingManager() {

cart = new ShoppingCart();

}

 

@Override

public List scanSaleItems(StringpKey) {

results = new ArrayList();

// 異步網絡請求

// TODO

 

// 這裡模擬實現

results = getSales();

return results;

}

 

@Override

public Sale scanSaleDetail(StringpId) {

return cart.scanSaleDetail(pId);

}

 

@Override

public doublecalculateTotalPrice() {

if(null ==results || 0 >results.size()) {

return 0;

}

 

double totalPrice = 0;

for(Salesale :results) {

totalPrice += sale.getpPrice();

}

 

return totalPrice;

}

 

private List getSales() {

Listresult = new ArrayList();

 

Salesale = new Sale();

sale.setpID(0000121300);

sale.setbID(1111232300);

sale.setpName(襯衫-黑領);

sale.setpPrice(123.14);

sale.setpDescri(黑色、圓領,高端大氣!);

result.add(sale);

 

Salesale2 = new Sale();

sale2.setpID(0000121311);

sale2.setbID(1111232311);

sale2.setpName(襯衫-黑領);

sale2.setpPrice(123.34);

sale2.setpDescri(黑色、圓領,高端大氣!);

result.add(sale2);

 

Salesale3 = new Sale();

sale3.setpID(0000121322);

sale3.setbID(1111232322);

sale3.setpName(襯衫-黑領22);

sale3.setpPrice(123.24);

sale3.setpDescri(黑色、圓領,高端大氣!);

result.add(sale3);

 

return result;

}

 

public ShoppingCart getCart() {

return cart;

}

}

下面為程序的運營結果圖,後面我會上傳項目代碼,感興趣的同學可以下載跑跑。效果圖如下:

 

\

好了,到這裡適配器模式已經介紹完了。

 

 

 

 

 

 

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved