单例模式--饿汉式、懒汉式
单例模式
饿汉式单例模式
步骤:
- 创建私有化的属性
- 构造器私有化
- 在类里创建静态的私有的实例化对象
- 创建静态 get 方法,能够调用实例化对象。
//创建一个老婆类,老婆只能有一个,所以该类要用单例模式。
public Wife{
    //1. 创建私有化的属性
    private String name;
    private int age;
    //2. 构造器私有化
    private Wife(String name,int age){
        this.name = name;
        this.age = age;
    }
    //3. 在类里创建静态的私有的实例化对象,new一个老婆(对象)
    private static Wife wife = new Wife("力宏",21);
    //4. 创建 get 方法,能够调用实例化对象。
    public static Wife getWife(){
        return wife;
    }
    //重写toString方法
    public String toString(){
        return "妻子"+name+"年龄"+age;
    }
}
当我们调用时,直接调用老婆类
pubic static void main(String[] args){
    //直接调用
    Wife wife =Wife.getWife();
}
懒汉式单例模式
步骤:
- 创建私有化的属性
- 构造器私有化
- 创建一个静态的属性对象
- 创建静态 get 方法,在方法里创建静态对象
public Wife{
//1. 创建私有化的属性
private String name;
//2. 构造器私有化
private Wife(String name){
    this.name = name;
}
//3. 创建一个静态的类属性
private static Wife wife;
//4. 创建静态 get 方法,在方法里创建静态对象
public static Wife getWife(){
    if(wife == null){
        wife = new Wife("小红");
    }
    return wife;
}
}
结尾,至于为什么叫饿汉式和懒汉式,这里的理解是,首先,由于创建的对象是静态的,在对类进行调用时,对象就会随着类的加载而创建,也就是说,在未进行调用之前就已将把对象创建完了,管你用不用,所以这种单例模式会造成空间浪费。
懒汉式就是在调用的时候才创建,比较懒,所以叫懒汉式。
两者的主要区别是创建的时机不同。对于懒汉式而言,存在一个线程安全问题(这里不进行细致刨析了,主要来阐述单例模式)。
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号