android 責任鏈模式

時(shí)間:2022-07-02 19:39:16 計算機軟件 我要投稿
  • 相關(guān)推薦

android 責任鏈模式

最近在繼續iPhone業(yè)務(wù)的同時(shí)還需要重新拾起Android。在有些生疏的情況下,決定從Android源碼中感悟一些Android的風(fēng)格和方式。在學(xué)習源碼的過(guò)程中也發(fā)現了一些通用的模式,希望通過(guò)一個(gè)系列的文章總結和分享下。

android 責任鏈模式

職責鏈模式使多個(gè)對象都有機會(huì )處理請求,從而避免請求的發(fā)送者和接收者之間的耦合關(guān)系。將這些對象連成一條鏈,并沿著(zhù)這條鏈傳遞請求,直到有一個(gè)對象處理它為止。

Android系統中根據XML排布文件創(chuàng )建界面的過(guò)程中通常需要針對不同類(lèi)型的控件通過(guò)各種工廠(chǎng)生成?紤]到效率問(wèn)題,Android采用了一個(gè)標準職責鏈模式的變種,我將這稱(chēng)之為“AB計劃”。區別示意圖如下所示:

標準職責鏈

AB計劃職責鏈

LayoutInflater中的工廠(chǎng)職責鏈設計如下圖所示:

其中FactoryMerger包含兩個(gè)工廠(chǎng)f1和f2,創(chuàng )建時(shí)候會(huì )先通過(guò)f1創(chuàng )建,如果失敗會(huì )嘗試f2。而且由于FactoryMerger也實(shí)現了Factory接口,因此也可以聚合到更高一層的FactoryMerger。和標準職責鏈模式相比,無(wú)法確保各個(gè)鏈節之間的先后關(guān)系,但如果聚合合理就可以有效減少遞歸次數,實(shí)現代碼如下:

public interface Factory {

public View onCreateView(String name, Context context, AttributeSet attrs);

}

private static class FactoryMerger implements Factory {

private final Factory mF1, mF2;

FactoryMerger(Factory f1, Factory f2) {

mF1 = f1;

mF2 = f2;

}

public View onCreateView(String name, Context context, AttributeSet attrs) {

View v = mF1.onCreateView(name, context, attrs);

if (v != null) return v;

return mF2.onCreateView(name, context, attrs);

}

}

其中,Factory 和FactoryMerger 分別是LayoutInflater內嵌接口和內嵌類(lèi)。


【android 責任鏈模式】相關(guān)文章:

制造企業(yè)供應鏈下物流管理運作模式論文07-04

android就業(yè)前景201607-03

2016android就業(yè)前景07-03

2016年android就業(yè)前景如何07-03

諾基亞會(huì )推出 Android 手機嗎?07-12

如何面試 Android 工程師?07-13

提高網(wǎng)站權重,關(guān)注反鏈和外鏈07-14

愛(ài)之鏈作文04-27

諾基亞手機怎樣運行Android圖案解鎖07-12

諾基亞為什么不出高端Android機?07-12

99久久精品免费看国产一区二区三区|baoyu135国产精品t|40分钟97精品国产最大网站|久久综合丝袜日本网|欧美videosdesexo肥婆