Android涉及到的设计模式(转)

1、适配器模式:ListView或GridView的Adapter

简介:不同的数据提供者使用一个适配器来向一个相同的客户提供服务。

 

2、建造者模式:AlertDialog.Builder

简介:可以分步地构造每一部分。

 

3、命令模式:Handler.post后Handler.handleMessage

简介:把请求封装成一个对象发送出去,方便定制、排队、取消。

 

4、享元模式:Message.obtainMessage通过重用Message对象来避免大量的Message对象被频繁的创建和销毁。

简介:运用共享技术有效地支持大量细粒度的对象。

 

5、迭代器模式:如通过Hashtable.elements方法可以得到一个Enumeration,然后通过这个Enumeration访问Hashtable中的数据,而不用关心Hashtable中的数据存放方式。

简介:提供一个方法顺序访问数据集合中的所有数据而又不暴露对象的内部表示。

 

6、备忘录模式:Activity的onSaveInstanceState和onRestoreInstanceState就是通过Bundle这种序列化的数据结构来存储Activity的状态,至于其中存储的数据结构,这两个方法不用关心

简介:不需要了解对象的内部结构的情况下备份对象的状态,方便以后恢复。

 

7、观察者模式:我们可以通过BaseAdapter.registerDataSetObserver和BaseAdapter.unregisterDataSetObserver两方法来向BaseAdater注册、注销一个DataSetObserver。这个过程中,DataSetObserver就是一个观察者,它一旦发现BaseAdapter内部数据有变量,就会通过回调方法DataSetObserver.onChanged和DataSetObserver.onInvalidated来通知DataSetObserver的实现类。事件通知也是观察者模式

简介:一个对象发生改变时,所有信赖于它的对象自动做相应改变。

 

8、原型模式:比如我们需要一张Bitmap的几种不同格式:ARGB_8888、RGB_565、ARGB_4444、ALAPHA_8等。那我们就可以先创建一个ARGB_8888的Bitmap作为原型,在它的基础上,通过调用Bitmap.copy(Config)来创建出其它几种格式的Bitmap。另外一个例子就是Java中所有对象都有的一个名字叫clone的方法,已经原型模式的代名词了

简介:在系统中要创建大量的对象,这些对象之间具有几乎完全相同的功能,只是在细节上有一点儿差别。

 

9、代理模式:类似于ios开发的delegate委托模式,所有的AIDL都一个代理模式的例子。假设一个Activity A去绑定一个Service S,那么A调用S中的每一个方法其实都是通过系统的Binder机制的中转,然后调用S中的对应方法来做到的。Binder机制就起到了代理的作用。

简介:为其他对象提供一种代理以控制对这个对象的访问。

 

10、状态模式:View.onVisibilityChanged方法,就是提供了一个状态模式的实现,允许在View的visibility发生改变时,引发执行onVisibilityChanged方法中的动作。

简介:状态发生改变时,行为改变。

 

11、策略模式:

举例:Java.util.List就是定义了一个增(add)、删(remove)、改(set)、查(indexOf)策略,至于实现这个策略的ArrayList、LinkedList等类,只是在具体实现时采用了不同的算法。但因为它们策略一样,不考虑速度的情况下,使用时完全可以互相替换使用。

简介:定义了一系列封装了算法、行为的对象,他们可以相互替换。

 

12、调解者模式

简介:一个对象的某个操作需要调用N个对象的M个方法来完成时,把这些调用过程封装起来,就成了一个调解者

举例:如Resource.getDrawable方法的实现逻辑是这样的:创建一个缓存来存放所有已经加载过的,如果getDrawable中传入的id所对应的Drawable以前没有被加载过,那么它就会根据id所对应的资源类型,分别调用XML解析器生成,或者通过读取包中的图片资源文件来创建Drawable。

而Resource.getDrawable把涉及到多个对象、多个逻辑的操作封装成一个方法,就实现了一个调解者的角色。

 

13、抽象工厂模式

DAO与Service的使用

 

http://blog.csdn.net/dengshengjin2234/article/details/8502097

 

时间: 2024-11-01 16:24:09

Android涉及到的设计模式(转)的相关文章

Android开发之Java设计模式基础篇

今天我们就Android开发中的一些设计模式做一些基础性的掌握,本次就Android项目的架构设计相关内容做分析: 1. 静态工厂方法 静态工厂方法可以算是工厂方法加单例模式的整合在Android平台上,由于Android的Context可以很好的传递实例,静态工厂方法可以提到传统的类构造器,对于一些逻辑的服务提供类可以考虑这样的设计,比如文件下载.图片裁剪等操作. 2. Java的类访问权限 对于程序的可靠性而言,成员变量尽量私有,通过暴漏公开的方法来访问这些私有成员,提供类似getXXX和s

Android设计模式之适配器(Adapter)模式_Android

本文实例为大家分享了Android适配器模式源码,供大家参考,具体内容如下 1. 模式介绍 1.1模式的定义: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 1.2模式的使用场景: 用电源接口做例子,笔记本电脑的电源一般都是接受5V的电压,但是我们生活中的电线电压一般都是220V的输出.这个时候就出现了不匹配的状况,在软件开发中我们称之为接口不兼容,此时就需要适配器来进行一个接口转换.在软件开发中有一句话正好体现了这点:任

移动设备交互设计:Android应用程序不需要手动退出

文章描述:Android应用程序需不需要手动退出? 不止一次,也不止一个人问过这个问题.我都回答了:不需要.但是,还是要记录下来. 我们不妨从了解这个系统对于应用程序管理的一些内部机制开始说明原因. 对于Android系统而言,包含"进程"和"服务"."进程"有正在运行的,也有刚刚离开在后台缓存的."服务"是一个无界面.长时间运行的应用功能,并且不会轻易被终止. 我们知道,在Android中可以快速通过主页键(home)或者使

设计模式的C++实现之建造者模式

解决的问题: 我创建的这个对象比较复杂,且该对象里面的成员函数用不同的实现来表示不同的实例,换句话说 就是同样的对象构建过程可以有不同的表示.比如我那天去吃过桥米线,他们有不同的套餐,套餐里包含的种类是一样的, 都有一碗米线,一份凉菜,一杯饮料.但是不同的套餐里这3样又都不是全部一样的.此时我们就可以用建造者模式. 类图结构: 1.建造者(Builder)角色:给出一个抽象接口,以规范产品对象的各个组成成分的建造.一般而言,此接口独立于应 用程序的商业逻辑.模式中直接创建产品对象的是具体建造者(

Android应用程序需不需要手动退出?

不止一次,也不止一个人问过这个问题.我都回答了:不需要.但是,还是要记录下来. 我们不妨从了解这个系统对于应用程序管理的一些内部机制开始说明原因. 对于Android系统而言,包含"进程"和"服务"."进程"有正在运行的,也有刚刚离开在后台缓存的."服务"是一个无界面.长时间运行的应用功能,并且不会轻易被终止. 我们知道,在Android中可以快速通过主页键(home)或者使用返回键(←)逐步离开应用程序. 主页键: 在当前运

Android 安全架构及权限控制机制剖析

Android 层次化安全架构 Android 作为一个移动设备的平台,其软件层次结构包括了一个操作系统(OS),中间件(MiddleWare)和应用程序(Application).根据 Android 的软件框图,其软件层次结构自下而上分为以下几个层次: 操作系统层(OS) 各种库(Libraries)和 Android 运行环境(RunTime) 应用程序框架(Application Framework) 应用程序(Application) 以下分别介绍 Andoid 各个层次的软件的重点及

【Android】GitHub Android 开源项目汇总

参考网址:http://blog.csdn.net/ithomer/article/details/8882236 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上.基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要.利用这些项目,有时能够让你达到事半功倍的效果. 1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个

Android UI组件

Android UI组件实例源码下载学习,对你的学习帮助是直接的,以下是下载包中的资料. 1.Android显示GIF动画 GifView GifView 是一个为了解决android中现在没有直接显示gif的view,只能通过mediaplay来显示这个问题的项目,其用法和 ImageView一样,支持gif图片使用方法:1-把GifView.jar加入你的项目.2-在xml中配置GifView的基本属性,GifView继承自View类,和Button.ImageView一样是一个UI控件.

《MapReduce设计模式》一1.1 设计模式

1.1 设计模式 近些年来,设计模式使开发者的工作变得更轻松.这些设计模式为解决问题提供了可复用的通用方法,开发者在遇到问题时可以花更少的时间来思考解决问题的策略,从而有更多的时间用来迎接新的挑战.与此同时,开发者积累的丰富经验也有了简洁的方式传递给新入门的开发者. 在软件工程的设计模式领域中,有一个重要里程碑,即<Design Patterns:Elements of Reusable Object-Oriented Software>一书(由Gamma等人所著),通常也被称为"四