单例模式

单例模式:使类在内存中只有一个实例对象。

实现单例的思路是:

     a 让外界不能创建对象

     b 类本身创建一个对象

     c  提供公共的访问方式  

无论是懒汉式还是饿汉式都具备以上三点

饿汉式:

public class Student {
    //为了让getStudent()可以使用stu对象,需要加上static
    //为了不让外界直接访问,把访问修饰符设置为private  
    private static Student stu = new Student();

    //把构造方法私有,防止被外界创建实例
    private Student() {
    }

    //因为构造是私有的,外界不能直接创建此类对象,需要提供一个公共的方法用来得到实例
    //为了让外界即使不创建对象也能使用这个方法,需要用static修饰
    public static Student getStudent() {
        return stu;
    }

}

     创建对象的操作被static修饰,也就是说,类一被内存加载,就会去创建对象(被static修饰的成员随着类的加载而加载),所以称做饿汉式

懒汉式:

public class Teacher {
private static Teacher tea = null;
private Teacher() { }
//加上synchronized关键字使线程同步
public static synchronized Teacher getTeacher(){ if(tea==null) tea = new Teacher(); return tea; } }

    如果不调用getTeacher()方法就不会去创建对象。体现了延迟加载(懒加载)的思想,懒汉式存在线程安全问题,需要加上synchronized关键字,使线程同步。

饿汉式:

原文地址:https://www.cnblogs.com/sflik/p/4829470.html