Bootstrap

单列模式

单列模式是最后常见的设计模式之一,主要用途是保证在整个程序中,指定的对象只创建一次,用到的始终都是同一个对象;

demo类

package com.huahaha;

public class Student {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

1.饿汉式(类加载时就创建),整个程序在运行时,有可能,没用到这个对象,这就造成了系统资源的浪费

package com.huahaha;

public class OnlyClass {
    //类加载的时候就创建对象
    private static Student student = new Student();

    //私有化构造方法(使其不能创建对象)
    private OnlyClass(){}

    //房间方法返回对象
    public Student getStudnet(){
        return student;
    }
}

2.懒汉式(需要的时候创建) 为了保证多线程的安全性,需要加synchronized 进行同步锁,但这样就影响程序的性能,所以不推荐

package com.huahaha;

public class OnlyClass {
    //类加载的时候先不创建对象
    private static Student student ;

    //私有化构造方法(使其不能创建对象)
    private OnlyClass(){}

    //房间方法返回对象
    public static Student getStudnet(){
        if (student==null) {
            synchronized (OnlyClass.class){
            //静态方法,同步对象为该类的字节码对象,如果非静态,则为this
                if(student==null){
                //调用该方法时,再创建对象,返回
                    student = new Student();
                }
            }
        }
        return student;
    }
}

3.静态内部类实现单列(内部类:在类加载时不会创建对象,在第一次引用的时候才会创建,也保证了线程的安全性)

package com.huahaha;

public class OnlyClass {
    //私有化构造方法(使其不能创建对象)
    private OnlyClass(){}

    //静态内部类
    private static class Intance{
        private static Student student = new Student();
    }

    public Student getStudent(){
        return Intance.student;
    }
}
;