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的使用

Android涉及到的设计模式相关推荐

  1. Android:Android涉及到的设计模式

    组合模式 Android中对组合模式的应用,可谓是泛滥成粥,随处可见,那就是View和ViewGroup类的使用.在android UI设计,几乎所有的widget和布局类都依靠这两个类. 组合模式, ...

  2. Android中常用的设计模式

    一:参考文档 先介绍参考文档(或许我们更容易明白):另记录本人可参考 QQ15 MobileSafe 两个Demo 有哪些在实际 Android 项目中用到的设计模式? Android开发中常见的设计 ...

  3. android开发常用的设计模式,android开发设计模式之——单例模式详解

    单例模式是设计模式中最常见也最简单的一种设计模式,保证了在程序中只有一个实例存在并且能全局的访问到.比如在Android实际APP 开发中用到的 账号信息对象管理, 数据库对象(SQLiteOpenH ...

  4. Android开源—RXJava观察者设计模式

    简介 RxJava 是一个响应式编程框架,采用观察者设计模式.所以自然少不了 Observable 和 Subscriber 这两个东东了. RxJava最核心的两个东西是Observables(被观 ...

  5. android java设计模式,Android开发之Java设计模式基础篇

    今日我们就Android开发中的一些设计模式做一些 根底性的 主宰,本次就Android项 目标架构设计 有关内容做 综合: 1. 静态工厂 步骤 静态工厂 步骤 可以算是工厂 步骤加单例模式的整合在 ...

  6. Android中常用的设计模式一

    对于开发来说,设计模式是必不可少的,就像是一个项目的架海紫金梁,而且熟悉常用的设计模式可以有助于我们研读源码.好,废话不多说,开始介绍 1> 单例: 不想再说了,如果还有人不会,我叫他大爷. 大 ...

  7. Android源码看设计模式(十)--------关于享元模式的Handler相关分析

    享元模式 定义: 使用共享对象可以有效的支持大量的细粒度的对象 应用场景 系统中存在大量的相似对象 细粒度的对象都具备比较接近的外部状态,而内部状态与环境无关,也就是说对象没有特定身份 需要缓冲池的场 ...

  8. android 模板方法模式,安卓设计模式(七)模板方法模式

    模板方法模式用于固定相关操作的执行流程,将具体实现延迟到子类中 该系列其他文章: 定义: 定义一个操作中算法的框架,而降一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定 ...

  9. android开发常见的设计模式,Android开发有哪些常用设计模式?

    面向对象的六大原则 单一职责原则 所谓职责是指类变化的原因.如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责.而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因.通俗的说,即 ...

  10. android 观察者的框架,Android 架构师7 设计模式之观察者模式

    前言 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern).比如,当一个对象被修改时,则会自动通知它的依赖对象.观察者模式属于行为型模式. 观察者模式.png 观察者模式 被 ...

最新文章

  1. 利用介质创建额外域控制器
  2. Yum mysql 日志_CentOS5上yum安装Apache+php+Mysql
  3. java hashmap替换key,HashMap 用可变对象作为 key 踩坑
  4. 【进出理论】投入与收益
  5. Java用freemarker导出word
  6. 通过PyTorch中的可视化理解卷积神经网络
  7. Python文件读取(1.1)
  8. scp shell脚本无需密码输入
  9. python locust post 参数拼接md5_Locust性能测试--接口加密参数关联
  10. 7-21 九宫格输入法 (15 point(s))
  11. php中的get_called_class()方法
  12. Vue滑动隐藏图标效果
  13. MapBoxGL 本地离线部署
  14. Windows11 系统打开IE浏览器的方式(完整版)
  15. 论坛各种问题总结--(随时更新)
  16. UVALive - 2D-Solar System
  17. MFC——CPropertySheet(属性表单)和CPropertyPage(属性页)——实现分页显示
  18. [Luogu1365] WJMZBMR打osu! / Easy
  19. 《Power》读书笔记
  20. 7.24运维日福利:运维都是段子手,张口就是100条!

热门文章

  1. 设计模式-抽象工厂模式
  2. 百度富文本编辑器上传图片到oss的步骤
  3. 【读书】兔兔西的已读书单
  4. 艺考生冬日穿泳装秀三围
  5. C# 命名空间中不存在类型或命名空间名System.XXX
  6. 计算机扩展屏幕管理软件,小智桌面 - 桌面助手 - 桌面管理美化软件
  7. 解决方案:Browserslist:caniuse-lite is outdated. Please run next command `npm update`
  8. DANDELION 病毒
  9. TS实现Base64的加密解密
  10. 51单片机ADDA数模转换