单例设计模式
在这里说说单例设计模式中的懒汉式和饿汉式。"饿汉式–即静态初始化的方式,它是类-加载就实例化的对象,所以要提前占用系统资源。然而懒汉式,又会面临着多线程访问的安全性问题,需要双重锁定这样的处理才可以保证安全“–引用自《大话设计模式》一书。
懒汉式和饿汉式都是提供单例对象的,有者他们的共性:
- 私有化构造器
- 内部静态实例单个对象
- 对外提供获取这个对象的方法。
饿汉式
在自己被加载时就将自己实例化的静态初始化方式。被形象的称为饿汉式单例。
java代码实现:
class User1{
private User1(){}
private static User1 user = new User1();
public static synchronized User1 getUser(){
return user;
}
}
懒汉式
要在第一次被引用的时候才会将自己实例化,所以称为懒汉式单例
class User{
private User(){}
private static User user;
public static User getUser(){
if(user == null){
synchronized (User.class){
if(user == null){
user = new User();
}
}
}
return user;
}
}
若对线程安全问题的解决有疑问的话,可以转一篇看懂Java线程安全问题