单例模式
有些对象我们只需要一个,如:配置文件、工具类、线程池、缓存、日志对象等。
如果创造出多个实例,就会导致许多问题,比如占用过多资源,不一样的结果等。
饿汉模式
将构造方法私有化,不允许外部直接访问。
1
private Singleton(){}
创建 类的唯一实例, 使用private static修饰。
1
private static Singleton instance=new Singleton();
提供一个用于获取实例的方法, 使用public static修饰。
1
2
3public static Singleton getInstance(){
return instance;
}
懒汉模式
将构造方法私有化,不允许外边直接创建对象。
1
2
3private Singleton2(){}
```
2. 声明 类的唯一实例,使用private static修饰。private static Singleton2 instance;
1
3. 提供一个用于获取实例的方法,使用public static修饰。
public static Singleton2 getInstance(){
if(instance==null){ instance=new Singleton2(); } return instance;}
`
饿汉模式与懒汉模式的区别
- 饿汉模式
加载类时比较慢,但运行时获取对象的速度比较快,线程安全
- 懒汉模式
加载类时比较快,但运行时获取对象的速度比较慢,线程不安全