android 責任鏈模式
最近在繼續iPhone業務的同時還需要重新拾起Android。在有些生疏的情況下,決定從Android源碼中感悟一些Android的風格和方式。在學習源碼的過程中也發現了一些通用的模式,希望通過一個系列的文章總結和分享下。
職責鏈模式使多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關係。將這些對象連成一條鏈,並沿着這條鏈傳遞請求,直到有一個對象處理它為止。
Android系統中根據XML排布文件創建界面的`過程中通常需要針對不同類型的控件通過各種工廠生成。考慮到效率問題,Android採用了一個標準職責鏈模式的變種,我將這稱之為“AB計劃”。區別示意圖如下所示:
標準職責鏈
AB計劃職責鏈
LayoutInflater中的工廠職責鏈設計如下圖所示:
其中FactoryMerger包含兩個工廠f1和f2,創建時候會先通過f1創建,如果失敗會嘗試f2。而且由於FactoryMerger也實現了Factory接口,因此也可以聚合到更高一層的FactoryMerger。和標準職責鏈模式相比,無法確保各個鏈節之間的先後關係,但如果聚合合理就可以有效減少遞歸次數,實現代碼如下:
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 = eateView(name, context, attrs);
if (v != null) return v;
return eateView(name, context, attrs);
}
}
其中,Factory 和FactoryMerger 分別是LayoutInflater內嵌接口和內嵌類。
-
計算機軟件工程師求職信
時間稍縱即逝,眼見着,找工作的時間馬上到來,求職信也應跟上時間的腳步了哦。你知道求職信要如何寫嗎?下面是小編為大家整理的計算機軟件工程師求職信,僅供參考,大家一起來看看吧。尊敬的騰訊公司的領導:您好!非常感謝您能夠抽空看我的這份材料,我是一個即將畢業的大學生...
-
電腦開機藍屏全是一堆英文
電腦開機藍屏全是一堆英文,怎麼辦?1)開機馬上按F8不動到高級選項出現在鬆手,選“最近一次的正確配置”回車修復,還不行按F8進入安全模式還原一下系統或重裝系統(如果重裝也是藍屏,建議還是檢修一下去,如果可以進入安全模式,説明你安裝了不合適的東西,將出事前下載的不...
-
計算機軟件技術的不可靠性探討論文
摘要:近些年來,我國的科學技術得到了迅速的發展,尤其是計算機技術的發展。隨着我國計算機應用水平的不斷提高,在計算機軟件方面我國已經有了很大的優勢,但是隨着社會的不斷髮展,計算機軟件技術也開始逐漸顯現出其弊端。關鍵詞:計算機技術;軟件技術;不可靠性1前言計算機...
-
計算機軟件銷售合同通用4篇
隨着法治精神地不斷髮揚,人們愈發重視合同,越來越多事情需要用到合同,正常情況下,簽訂合同必須經過規定的方式。那麼常見的合同書是什麼樣的呢?以下是小編為大家整理的計算機軟件銷售合同,歡迎閲讀,希望大家能夠喜歡。計算機軟件銷售合同1甲方:_______________________...
相關文章
- administrator什麼意思-administrator讀法音標
- Amazon Kindle Fire HDX 搭載的 Mojito 系統有革新和體驗?
- TRAINING COORDINATOR電子簡歷模板
- 谷歌正式拋棄Android 2.3
- 七年級英語評課稿:Module 7 Reading and Speaking
- Adoption of the Declaration of Human Rights演講稿
- android項目責任描述
- 《Mad World》Jasmine Thompson/Eden Prince歌詞
- 利用Android ROM可以讓你的智能手機變成台式機
- 攝影師Dylan Collard攝影作品│V&A Inside Out。