单例模式:确保某个类只有一个实例,而且自行实例化并向整个系统提供此实例。其类图和代码框架分别如下:
-
Singleton.java
/**
- Created by Cheney Hwang on 2017/5/10.
- 线程安全
*/
public class Singleton {
private static final Singleton singleton = new Singleton();
//私有构造函数禁止外部构建实例
private Singleton() {
}
public static Singleton getSingleton() {
return singleton;
}
//单例的其他方法最好也是静态的
public static void doSomething() {
System.out.println("I'm singleton!");
}
}
1. 单例模式使用场景:
- 用于统筹控制系统资源、序号分配等;
- 作为系统的共享访问点;
- 对象创建吃力;
- 定义大量静态常量和静态方法的工具类。
2. 单例模式的优点
- 减少内存开支;
- 无需频繁创建和销毁,提高性能,尤其有利于大对象;
- 避免资源多重占用;
3. 单例模式的缺点
- 扩展困难,单例模式没有接口(当然,单例不是为了扩展而生的)
- 不利于测试