Android 设计模式思想---汇总

更新中.......
刚开始学设计模式的时候, 一上来直接看别人的文章直接开撸.
问题描述:

  1. 学的时候感觉还不错, 能理解的了, 但是很容易忘记, 学了后面的就忘了前面的, 或者一段时间没接触设计模式以后, 很多东西都忘了, 更别提在项目中使用了;

  2. 看着别人的文章好像知道是这么回事, 但是就是不知道在项目中什么情况使用什么设计模式. 反正就是一脸懵逼, 似懂非懂的感觉,

借用古人的话: 学而不思则罔,思而不学则殆;
思考: 为什么会出现这样的问题?
我们太关注代码的实现, 而忽略了设计模式的本质.

我们学习设计模式的目的?

  1. 为了看懂系统源码或第三方优秀框架源码.
  2. 为了解决项目中碰到的问题.
  3. 面试(搞定上面2点, 面试应该问题不大).
  4. 自己封装一些东西的时候, 或许会用到.
  5. 其它的暂时没想到.

设计模式的本质
就是为了解决特定的问题.

既然是特定的问题, 那我们只需要关注什么设计模式解决的是什么问题就可以了; 不需要关注代码的实现过程. 代码实现过程过一遍即可.

1. 创建型模式:

关注的是对象的创建

设计模式 说明 伪代码
单例模式 保证整个程序中只有一个实例 A a = A.getInstance()
Builder模式 解决问题: 对象参数比较多,初始化比较麻烦 , 例如OkHttp中, OkHttpClient初始化过程 A a = A.Builder().builder()
工厂模式 把对象创建的过程封装起来, 调用者不需要关注封装过程, 想拿哪个对象就直接去拿 A a = Factory.createA();
原型模式 copy(复制)已有的对象来创建的新的对象,从而节省时间和内存 A a2 = a.copy()
2. 结构型模式
设计模式 解决的问题
适配器模式 A需要和a才能正常工作, 通过适配器将b转成a, 再传给A.
装饰模式 java只能单继承, 在不使用的继承的方式下, 扩展对象的功能, 例如: ListView和RecyclerView添加头部和尾部
桥接模式
组合模式
外观模式
享元模式
代理模式 A要访问a, A--->B(代理)--->a, 这个过程B代理可以做一些扩展性的东西
3. 行为型模式
设计模式 解决的问题 简单例子
模版设计模式 让流程更加规范, 先做什么, 后做什么 Activity生命周期, 按照先后顺序执行
命令模式
迭代器模式 容器对象A提供一个迭代器, 可以按顺序访问A中各个元素,同时不需暴露A的内部细节
观察者模式 ABC同时观察a, 如果a变化, ABC都会收到通知
中介者模式
备忘录模式
解释器模式
状态模式
策略模式 同级的东西可以互相切换
责任链模式
访问者模式

你可能感兴趣的:(Android 设计模式思想---汇总)