什么情况使用什么设计模式(Android源码设计模式解析与实战)

设计模式分为三种类型,共23类。
一、创建型模式:单例模式、抽象工厂模式、建造者模式(Builder)、工厂模式、原型模式。

二、结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。

三、行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。

1、单例模式(应用最广的模式)

  • ImageLoader初始化
  • Retrofit初始化
  • OkHttp初始化
  • … 初始化

2、Builder模式(自由拓展你的项目)

  • 快速构建一个AlertDialog
  • 快速构建一个MaterialDialog

3、原型模式(使程序运行更高效)

  • 登录Session,只读,不允许修改

4、工厂(抽象工厂)模式(创建型设计模式)

  • Java中的数据访问层Dao
  • 接口并发同步数据

5、策略模式(多种解决方式拆分多个类)

  • 解放 if else / switch case

6、状态模式

  • APP判断当前登录状态

  • 播放器的播放、暂停状态

  • 遥控器的开机、关机、音量大小

7、责任链模式(灵活编程)

  • 审批流

8、解释器模式(化繁为简的翻译机)【使用很少】

  • 一些重复出现的问题用一种简单的语言表达

9、命令模式(让程序畅通执行)

  • 画板的撤销和重做
  • eclipse的ctrl + z 和 ctrl + y

10、观察者模式(解决、解耦的钥匙)

  • 广播订阅发布
  • 同时关闭多个activity
  • EventBus事件总线
  • ListView的notifyDataSetChanged

11、备忘录模式(编程中的后悔药)

  • 游戏中的存档
  • Android 中页面异常销毁,onSaveInstanceState
  • 播放器的存档,恢复播放

12、迭代器模式(封装遍历方法)

  • 开发者很少自己实现迭代器,此模式作为了解

13、模板方法模式(抓住问题的核心)

  • AsyncTask执行流程
  • 请求框架的流程:创建请求-执行请求-解析返回数据

14、访问者模式(数据操作和结构分离)【使用很少】

  • ButterKnife
  • Dagger2

15、中介者模式(和事佬)

  • 数据库多对多中的中间表

  • mvp中的p

  • UI控件交互

16、代理模式(委托书)

  • 代理服务器
  • 律师
  • ActivityManagerProxy
  • Spring中的AOP
  • Struts2中的拦截器

17、组合模式(物以类聚)【使用很少】

  • View和ViewGroup的组合

18、适配器模式(得心应手的“粘合剂”,让不兼容变兼容)

  • RecylerView的Adapter
  • 变压器

19、装饰模式(动态拓展功能)

  • Context

20、享元模式(对象共享,避免创建过多对象)

  • UI线程中更新视图
  • Android的消息机制

21、外观模式(统一编程接口)

  • 封装API(请求模块、sql模块、图片加载)
  • 手机集合拍照、打电话、上网功能的统一接口
  • 开源库

22、桥接(梁)模式(连接两地的交通枢纽)

  • 数据库Dao
  • 自定义控件
  • 应用层和Native层的桥梁

23、MVC

model(模型):本地或者网络数据体
View(视图):View
Controller(控制器):Activity

上面3者配合进行数据加载的过程

24 MVP(model、View、Presenter)

model(模型):本地或者网络数据体
View(视图):View
Presenter(交互中间人):Presenter

上面3者配合进行数据加载的过程

所有Demo

http://download.csdn.net/download/zx_android/10222148

更多详解:
http://blog.csdn.net/qq_17766199/article/category/6009933/2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哆啦A梦z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值