Skip to content

Latest commit

 

History

History
216 lines (73 loc) · 2.77 KB

【A】框架源码与设计 -- 设计模式.md

File metadata and controls

216 lines (73 loc) · 2.77 KB

【A】Android源码分析与设计 -- 设计模式

问题导向

  • MVC、MVP和MVVM。谈谈MVC、MVP和MVVM,好在哪里,不好在哪里 ?MVVM中各层在Android开发中的对应关系。

面向对象设计原则与思想

面向对象设计理论

设计原则

规范与重构

一、创建型设计模式

单例模式

DCL 单例
枚举单例

枚举单例解决反射和序列化问题,

Enum是个抽象类,声明枚举类时自动继承。没有无参构造函数,只有一个参数为(String.class,int.class)构造器。

反射API Constructor#newInstance()中有判断如果是Modifeir.ENUM则报IllegalArgumentExeption。

https://blog.csdn.net/u011277123/article/details/104523638

静态内部类方式单例

通过静态内部类实现的单例有啥优点?


懒汉式单例

饿汉式单例

单例模式安全问题

五种单例都能解决多线程安全问题。但是不同程度上仍要考虑序列化、反射对单例的破坏问题。

工厂模式

​ 简单工厂模式

​ 工厂方法模式

​ 抽象工厂模式

​ 使用工厂模式实现简单的DI框架

建造者模式

通过返回自身实现的设置属性同builder模式有什么不一样?

二、结构型设计模式

代理模式

桥接模式

装饰器模式

适配器模式

​ 类适配器

​ 类适配器使用继承关系实现

​ 对象适配器

​ 对象适配器使用组合关系实现

门面模式

享元模式

组合模式

​ 处理树形结构问题

三、行为型设计模式

策略模式

观察者模式

​ 同步阻塞式

​ 异步非阻塞式

​ EventBus框架

模版模式

责任链模式

状态模式

​ 分支逻辑实现方式

​ switch-case分支参照状态图将状态转移原模原样暴力直译。

​ 查表法实现方式

​ 二维数组来表示状态转移图。适于状态多且状态转移比较复杂的状态机。

​ 利用状态模式

​ 适于状态不多、状态转移也比较简单,但事件出发执行的动作包含的业务逻辑比较复杂的状态机。

命令模式

复合型设计模式

MVC、MVP和MVVM

MVC、MVP和MVVM 不是应用架构,只是解决数据、逻辑、视图、生命周期等痛点问题的解决方案,也只是一种设计模式。MVX这些设计模式涉及到的角色,与应用架构分层之间有着不尽相同的对应关系。在实践中有着各自的优缺点。

学习资源