概述
- 定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。
- 实现:私有静态成员变量,存放实例;私有构造方法,防止new实例;公共静态方法,创建或返回私有静态成员变量存放的实例
- 懒汉模式:工厂方法时实例对象,运行时实例
- 饿汉模式:私有静态成员变量直接赋值,编译直接实例对象
- 单例模式是一种对象创建型模式。
- 学习难度:★☆☆☆☆
- 使用频率:★★★★☆
优缺点
- 优点
- 缺点
- 需要额外的处理线程安全
- 要考虑单例会GC的问题(网上错误的观点)
类图
组成角色
Code Example
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {
}
public static Singleton getInstance() {
return instance;
}
}
class Singleton_2 {
private static Singleton_2 instance = null;
private Singleton_2() {
}
public static synchronized Singleton_2 getInstance() {
if (instance == null) {
instance = new Singleton_2();
}
return instance;
}
}