单例模式特征
- 构造方法不对外开放,一般是 private
- 通过一个静态方法或者枚举返回单例类的对象
- 注意多线程场景
- 注意单例类对象在反序列化时不会重新创建新对象
实现
1.懒汉式
在第一次调用的时候实例化自己(线程不安全),在创建单例过程中访问了 getInstance 便会再创建一个,系统中出现两个 Instance 对象。
2.饿汉式
静态 intstance ,系统运行时就创建。
3.懒汉 + 锁
双重校验(sync 锁),解决多线程访问的对象问题,问题:指令重排,导致双重检查失效的问题
4.静态内部类单
static class holder 中再放 static Instance
5.枚举类单例
通过枚举类中存放一个对象
6.容器实现单例
利用 hashmap 的线程安全性特点
常用位置 context.getService(),在获取系统服务时(单例),时对外提供就是这样.
系统提供了 Singleton 模板类,实现在 AMS 的获取
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于