1.单例设计模式概述
1.定义
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。引用自某度
2.使用场景
- 当某一实例存在多个可能会引起程序逻辑错误时
- 出于节省系统资源的目的
2.三种常用的实现方式
1.饿汉式
代码示例:
//饿汉式
class Single{
private static final Single instance=new Single();
private Single(){
//执行代码
}
//定义获取实例对象的静态方法
public static Single getInstance(){
return instance;
}
}
2.懒汉式
代码示例:
//懒汉式(延迟加载)-非线程安全形式
class SingleAnother{
private static SingleAnother instance=null;
private SingleAnother(){
//执行代码
}
//定义获取实例对象的静态方法
public static SingleAnother getInstance(){
//在创建前进行判断
if(instance==null){
instance=new SingleAnother();
}
return instance;
}
}
3.线程安全的懒汉式(双重锁形式)
代码示例:
//懒汉式(延迟加载)-线程安全-双重锁模式
class SingleAnotherSafe{
private static SingleAnotherSafe instance=null;
private SingleAnotherSafe(){
//执行代码
}
//定义获取实例对象的静态方法
public static SingleAnotherSafe getInstance(){
//进行两次判断节省用户资源
if(instance==null){
synchronized(SingleAnotherSafe.class){
if(instance==null)
instance=new SingleAnotherSafe();
}
}
return instance;
}
}
说明:该模式进行了两次判断,仅在第一次实例化时令线程对锁进行判断。实例创建后,就没必要再次判断锁了。有利于节省系统资源