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内嵌接口和内嵌类。
-
关于探究计算机软件开发的基础架构原理
探究计算机软件开发的基础架构原理计算机软件设计的过程,就是在逻辑关系的引导下,实现软件内容的重新确定,进而形成对应的基础架构,这是软件运行的前提和基础,甚至会影响到后期软件系统的维护和管理工作。由此积极探讨计算机软件开发的基础架构原理,是很有必要...
-
计算机软件的实习报告合集六篇
随着个人的文明素养不断提升,接触并使用报告的人越来越多,其在写作上具有一定的窍门。那么一般报告是怎么写的呢?下面是小编精心整理的计算机软件的实习报告6篇,希望能够帮助到大家。计算机软件的实习报告篇1一、实习目的进一步了解java开发的相关知识,掌握java开发...
-
计算机软件专业求职信合集7篇
计算机软件专业求职信篇1敬的**公司领导:您好!感谢您能百忙之中关注我的个人求职信。我是一名大三学生,就读于211重点大学----西南交通大学,我的姓名叫程XX,所读专业我学校软件学院计算机软件职业。在校期间我刻苦学习、严格遵守学校的规章制度、社会公德,尊敬师长,团...
-
A6财务基础版,会计做账软件功能介绍
总账与现金、银行的集成管理平台支持各类企业会计制度及新会计准则,预置40个行业会计科目及财务报表模版;2灵活的凭证录入、查询、审核、过账及汇总功能;2多种账务处理、查询与格式输出;2提供出纳人员集成办公管理平台,实时查询银行日记账、现金日记账及资金日报表;2...
相关文章
- 利用Android ROM可以让你的智能手机变成台式机
- 谷歌正式抛弃Android 2.3
- Amazon Kindle Fire HDX 搭载的 Mojito 系统有革新和体验?
- 摄影师Dylan Collard摄影作品│V&A Inside Out。
- 《Mad World》Jasmine Thompson/Eden Prince歌词
- Adoption of the Declaration of Human Rights演讲稿
- administrator什么意思-administrator读法音标
- TRAINING COORDINATOR电子简历模板
- 七年级英语评课稿:Module 7 Reading and Speaking
- android项目责任描述