什么情况使用什么设计模式(Android源码设计模式解析与实战)
2017-12-18 18:26
791 查看
设计模式分为三种类型,共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
一、创建型模式:单例模式、抽象工厂模式、建造者模式(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
相关文章推荐
- Android源码设计模式解析与实战 (总结)
- Android源码设计模式解析与实战(五)
- Android 源码设计模式解析与实战 第2版 读书笔记1.3 里氏替换原则
- Android源码设计模式解析与实战(八)
- <<Android源码设计模式解析与实战>>读书笔记----- Android NDK开发学习
- android源码设计模式解析与实战 笔记 3.7节
- Android源码设计模式解析与实战阅读讨论
- Android源码设计模式解析与实战(Based on Lollipop) 第一章 读书笔记
- Android 源码设计模式解析与实战
- Android源码设计模式解析与实战(三)
- android 源码设计模式解析与实战 读书笔记 1 面向对象的六大原则
- Android源码设计模式解析与实战
- android源码设计模式解析与实战 读书笔记 2 单例模式(上)
- android源码设计模式解析与实战 笔记 6.6节
- Android源码设计模式解析与实战(七)
- android源码设计模式解析与实战 笔记 5.7节
- Android源码设计模式解析与实战(四)
- Android源码设计模式解析与实战
- android源码设计模式解析与实战 笔记 4.8节
- Android源码设计模式解析与实战(一)