设计模式之"单列模式"

根据慕课网课程的理解
http://www.imooc.com/learn/112
单列模式 : 有且只有一个
    饿汉模式
安全

public class Singleton(){
    //1.将构造方法私有化,不容许外部直接建立对象
    private Singleton(){}
    //2.建立一个类的惟一实例,使用private static修饰
    private static Singleton instance=new Sngleton();
    //3.提供一个用户获取实例的方法,使用public static修饰
    public static Singleton getInstance(){
        return instance;
    }
}


饿汉模式当你加载的时候类自动帮你建立实例,就比如提早吃饭(饿)spa

解释
1.将构造方法私有化,不容许外部直接建立对象
答:由于外部Singleton singleton=new Singleton();就等于建立了实例,多个实例就不是单列模式线程

2.建立一个类的惟一实例,使用private static修饰
答:使用static是由于直接使用类来访问实例,Singleton singleton=Singleton.instance;
    使用private是为了安全,封装一下code

3.提供一个用户获取实例的方法,使用public static修饰
答:使用static是由于他属于对象,加上static变成类全部对象


    懒汉模式get

public class Singleton(){
    //1.将构造方法私有化,不容许外部直接建立对象
    private Singleton(){}
    //2.申明类的惟一实例,使用private static修饰
    private static Singleton instance;
    //3.提供一个用户获取实例的方法,使用public static修饰
    public static Singleton getInstance(){
        if(instance=null){
            instance=new Sngleton();
        }
        return instance;
    }
}

懒汉模式当你调用getInstance()方法的时候才会建立实例
当有第二我的来访问的话就不会在建立实例
class

懒汉模式和饿汉模式的区别
饿汉式的特色:加载类时比较慢,可是运行时获取对象的速度比较快,线程安全
懒汉式的特色:加载类时比较快,可是运行时获取对象的速度比较慢,线程不安全方法

为何呢???
饿韩式当你加载类的时候就会实例化,而懒汉式是你须要的时候才会实例化。im

相关文章
相关标签/搜索