//饿汉式 public class Singleton1 { public static void main(String[] args) { MySingle single1 = MySingle.getSingle(); MySingle single2 = MySingle.getSingle(); System.out.println(single1 == single2);//true,==比较的是地址值,说明是同一个对象 System.out.println(single1); System.out.println(single2); } } //创建单例程序 class MySingle{ private MySingle(){ }; static private MySingle single = new MySingle(); static public MySingle getSingle(){ return single; } }
**************************************************************************************************************
//懒汉式--单例设计模式 //需要的时候再创建,这个类的对象--利用了延迟加载的思想 public class Singleton { public static void main(String[] args) { MySingle2 single1 = MySingle2.getSingle2(); MySingle2 single2 = MySingle2.getSingle2(); //测试两个引用类型变量保存的对象的地址值是否一致 System.out.println(single1); System.out.println(single2); System.out.println(single1 == single2); } } class MySingle2{ //1、私有化本类构造方法,防止外界直接调用本类构造方法创建对象 private MySingle2() {} //2、在类的内部创建好引用类型变量(延迟加载的思想) private static MySingle2 single2; //3、创建一个公共的方法给外界调用,用来获取本类唯一对象 public static MySingle2 getSingle2(){ //返回对象之前,先判断single2是否有保存地址值 //默认值为null,说明之前没有创建过本类对象 //那么就创建一个并赋值给single2 if (single2 == null){ single2 = new MySingle2(); } //如果跳过了,则说明创建过对象,single2不为空,有地址值 //返回原地址值 return single2; } }