单例模式:目的是不让类可以实例化多个,只让其实例化一个(不管实例化几次,值都相同)
1.懒汉模式(有点无语的比喻)
要实例化的类
public class Student { //设置私有静态变量 private static Student student=null; //设置私有无参构造 private Student() { } //设置一个公有静态类来让其他类访问(可当做访问接口) public static synchronized Student door(){ if(student==null){ student=new Student(); } return student; } }
在另外一个类调用这个方法:
Student stu1=Student.door(); Student stu2=Student.door(); System.out.println(stu==stu1); System.out.println(stu==stu2);
其结果为:
注:如果强行实例化,当然会报错啦~
2.饿汉模式
要实例化的类
public class Student { //设置静态变量 private static Student student=new Student(); //设置一个公有静态类来让其他类访问(可当做访问接口) public static synchronized Student door(){ return student; } }
在另外一个类调用这个方法:
Student stu1=Student.door(); Student stu2=Student.door(); System.out.println(stu==stu1); System.out.println(stu==stu2);