单例模式的简单理解

        单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例 。

其又分为三种形式

饿汉式,懒汉式,双重锁式

首先是饿汉式

 
public class SpUtils{
    //在自己内部定义自己的一个实例,只供内部调用
    private static final SpUtils spUtils= new SpUtils();
    private SpUtils(){
    }
    //这里提供了一个供外部访问本class的静态方法,可以直接访问获得本类初始化对象
    public static SpUtils getInstance(){
        return spUtils;
    }
}

然后是懒汉式

 
private static SpUtils spUtils= null;
public static synchronized SpUtils getsp() {
    // 这个方法,不用每次都进行生成对象,只有第一次生成对象
    // 使用时生成实例,提高了效率!  
    if (spUtils == null)
        spUtils = new SpUtils();
    return spUtils;
}  


双重锁式

 
//将同步内容下方到if内部,提高了执行的效率,不必每次获取对象时都进行同步,只有第一次才同步,创建了以后就没必要了。
private static volatile SpUtils spUtils=null;
private SpUtils(){}
public static SpUtils getsp(){ 
    if(spUtils==null){ 
        synchronized(SpUtils .class){ 
            if(spUtils==null){ 
                spUtils=new SpUtils(); 
                    } 
                        } 
                            } return spUtils;}

优点

实例控制:Singln 会阻止其他对象实例化其自己的 Singln 对象的副本,从而确保所有对象都访问唯一实例

灵活性:因为类控制了实例化过程,所以类可以更加灵活修改实例化过程

缺点

开销:虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销,可以通过使用静态初始化解决此问题。

猜你喜欢

转载自blog.csdn.net/jie1175623465/article/details/80245215
今日推荐