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內嵌接口和內嵌類。
-
計算機軟件專業求職信(13篇)
時間是箭,去來迅疾,我們又將面臨求職找工作的挑戰,此時此刻需要開始寫求職信了哦。那麼如何寫求職信才簡練、明確呢?以下是小編幫大家整理的計算機軟件專業求職信,歡迎大家借鑑與參考,希望對大家有所幫助。計算機軟件專業求職信1尊敬的經理:您好!我的名字叫xx,聽到貴公...
-
(精華)計算機軟件許可協議
在現在社會,很多場合都離不了協議,簽訂協議能夠最大程度的保障自己的合法權利。一般協議是怎麼起草的呢?以下是小編收集整理的計算機軟件許可協議,歡迎大家分享。計算機軟件許可協議1甲方(委託方):乙方(受託方):甲方因涉嫌一案,聘請乙方的律師爲辯護人,經雙方協商,達成...
-
關於計算機軟件開發中的分層技術探討
伴隨着網絡技術的進步,計算機軟件從原有的兩層結構模式逐漸過渡到多層結構模式,並被廣泛地應用在軟件開發工作中。近年來,計算機應用環境日益複雜,多層結構體系應運而生,多層結構體系的應用可簡化軟件系統流程,便於維護擴展工作的開展。1分層技術概述1.1內涵分層技術...
-
win7如何設置ip地址-win7設置ip地址圖文步驟
導語:IP地址是IP協議提供的一種統一的地址格式,它爲互聯網上的每一個網絡和每一臺主機分配一個邏輯地址,以此來屏蔽物理地址的'差異。1、點擊開始——控制面板;2、選擇“網絡和Internet”;3、選擇網絡和共享中心;4、然後選擇更改適配器;5、在無線網絡圖標上單擊...
相關文章
- 利用Android ROM可以讓你的智能手機變成臺式機
- 谷歌正式拋棄Android 2.3
- android項目責任描述
- 七年級英語評課稿:Module 7 Reading and Speaking
- Amazon Kindle Fire HDX 搭載的 Mojito 系統有革新和體驗?
- Adoption of the Declaration of Human Rights演講稿
- 《Mad World》Jasmine Thompson/Eden Prince歌詞
- TRAINING COORDINATOR電子簡歷模板
- administrator什麼意思-administrator讀法音標
- 攝影師Dylan Collard攝影作品│V&A Inside Out。