定义:
1、一个类只有一个实例
2、构造函数私有化
3、简单来说,所谓的饿汉式单例就是线程安全的,而且是推荐做法。懒汉式单例就是线程不安全的。
线程安全的:
/** * @author Administrator * 饿汉式单例,线程安全的 */ public class SingleInstance { private static final SingleInstance singleTon = new SingleInstance(); private SingleInstance() { } public static SingleInstance getSingleton() { return singleTon; } }
线程不安全的:
/** * @author Administrator * 懒汉式单例,线程不安全的 */ public class SingleInstance { private static final SingleInstance singleTon = null; private SingleInstance() { } // 加上synchronized,即是线程安全的, // public synchronized static SingleInstance getSingleton() { public static SingleInstance getSingleton() { if (singleTon == null) { singleTon = new SingleInstance(); } return singleTon; } }
单例模式的扩展:固定数量的实例,get实例的时候可以根据自己的算法get,顺序,随机什么的,这里不做解析。
单例模式优点:
1、减少内存开支,特别是需要频繁创建销毁对象。
2、通过应用启动时永久驻留内存
3、避免对资源的多重占用,例如写文件
4、优化共享资源
单例模式缺点:
1、扩展困难
2、测试困难,必须完成才能做测试