单例模式
来源:互联网 发布:c语言实现快速排序法 编辑:程序博客网 时间:2024/06/05 23:52
单例模式
读了Android源码设计模式解析与实战的个人总结
推荐使用静态内部类单例,配合一个map进行管理
管理类
public class SingletonManager { private static Map<String, Object> objMap = new HashMap<String, Object>; private SingletonManager(){ } public static void registerService(String key, Object instance) { if (!objMap.containsKey(key)) { objMap.put(key, instance); } } public static Object getService(String key) { return objMap.get(key); }}
静态内部类单例
延迟加载,减少内存开销。因为用到的时候才加载,避免了静态field在单例类加载时即进入到堆内存的permanent代而永远得不到回收的缺点(大多数垃圾回收算法是这样)。
public class Singleton { private Singleton(){ } /** * 该方法调用的时候,虚拟机才会加载内部类 * @return */ public static Singleton getInstance(){ return SingletonHolder.sInstance; } /** * 静态内部类唯一存在 */ private static class SingletonHolder{ private static final Singleton sInstance = new Singleton(); }}
枚举单例
很好,不仅能避免多线程同步问题,
而且还能防止反序列化重新创建新的对象。
但是失去了类的一些特性,
没有延迟加载
public enum SingletonEnum { INSTANCE; public void doSomething(){ System.out.println("do sth."); }}
0 0
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- Android FlexboxLayout基本用法
- SampleAction
- LinuxC编程一站式学习(C语言本质)
- 国防科大校赛决赛-final(镜像赛) Problem C: XueXX and Chessboard
- 最大熵模型
- 单例模式
- MANIFEST.MF
- Android Studio 利用 Live Templates 定义模板
- Linux C程序设计-emacs使用一
- plugin.xml
- 论文笔记《Multi-scale Orderless Pooling of Deep Convolutional Activation Features》
- java29接口的应用
- 在MATLAB下调试Caffe
- oracle11g 最终版本11.2.0.4安装详细过程