前言
接下来这几篇文章主要是记录下单例设计模式的定义、单例设计模式的常用写法、及使用场景——强大的Activity的管理。将分为以下3篇文章来记录。
单例设计模式(一) - 定义、volatile关键字好处
单例设计模式(二) - 常见几种写法
单例设计模式(三) - 强大的Activity的管理
1. 设计模式定义?
是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。
说白了,就是一些开发的套路,用于解决某一些特定场景的思想;
2. AOP思想?
AOP,面向切面,不是代码,它是一种思想,把通用的部分代码统一的管理,可以使用动态代理、也可以使用aspectJ;
3. OOP思想?
OOP就是面向对象,别人说面向对象你知道,说OOP你也需要知道,OOP就是面向对象;
3. 单例设计模式?
保证整个程序中只有一个实例对象,使用场景就是一些特殊的类,比如:老板、管理层、管理的类(比如Activity的管理、皮肤的管理);
特殊情况,有时候可以写一个 XXXUtils工具类,让其只有一个实例,也是可以的;
套路:
0>:私有的、静态的、volitale、mInstance对象;
1>:私有的构造方法,防止别人去new 对象;
2>:共有的、静态的、getInstance(),让外部调用;
4. volatile关键字好处?
1>:防止重新排序:
如下图所示:
一般都是第一种的1、2、3,也就是说先开辟内存,然后初始化对象,最后赋值给mInstance,如果不加volatile关键字的话,可能会出现第二种的1、2、3;
加volatile目的就是:不要出现第二种情况的1、2、3;
2>:线程可见性:
某一个线程修改了公用对象(变量),短时间内另一个线程可能是不可见的,因为每一个线程都有自己的缓存区(线程工作区)
加volatile目的就是:让每一个线程都变得可见;
代码已上传至github:
https://github.com/shuai999/Architect_day8.git