java 设计模式总结-单例模式

时间:2025-08-27 15:36:01来源:互联网

下面小编就为大家分享一篇java 设计模式总结-单例模式,具有很好的参考价值,希望对大家有所帮助。

单例设计模式

保证一个类在内存中的对象唯一性。在整个软件运行期间,针对某一个类只存在一个实例

单例设计模式分为饿汉式和懒汉式

饿汉式

查看代码
class Single{
    private Single(){} //私有化构造方法。
    private static Single s = new Single(); //创建私有并静态的本类对象。
    public static Single getInstance(){ //定义公有并静态的方法,返回该对象。
        return s;
    }
}

 

懒汉式

查看代码
 public class Single{
    private Single(){} //私有化构造方法。
  private static Single s = null;
  public static synchronized Single getInstance(){
      if(s==null){
          s = new Singleton();
      }
  return s;
  }
}

为了效率问题,通过双重判断的形式解决。

查看代码
 class Single{
private Single(){} //私有化构造方法。
    private static Single s = null;
    public static Single getInstance(){ //锁是谁?字节码文件对象;
        if(s == null){
            synchronized(Single.class){
                if(s == null)
                s = new Single();
            }
        }
        return s;
    }
}

 

饿汉式和懒汉式的区别

懒汉式是延时加载,他在类调用获得实例方法时创建实例,而饿汉式在类加载时候就会创建。

饿汉式是线程安全的,在类创建的同时就创建好一个静态的对象供系统使用,以后不在改变
不加synchronized懒汉是不安全的,如不加上synchronized则会导致对对象的访问不是线程安全的,多线程访问时会创建多个实例,加上又会影响效率,可以用双重判断形式解决
推荐使用饿汉式,

 

内部类方式:

public class Single {
    private static class LazyLoader{
        private static final Single instance = new Single ();
    }
    private Single(){}
    public static Single getInstance(){
        return LazyLoader.instance;
    }
}

 

本站部分内容转载自互联网,如果有网站内容侵犯了您的权益,可直接联系我们删除,感谢支持!