package cn.edu.singleton;public class 单例模式 {public static void main(String[] args) {Box info1 = Box.getInfo();Box info2 = Box.getInfo();System.out.println(info1 == info2); //测试是否同一个实例 trueDog dog1 = Dog.getInfo();Dog dog2 = Dog.getInfo();System.out.println(dog1 == dog2);//测试是否同一个实例 true}}
单例模式有以下特点: 1,在某个类中只存在一个对象实例 2,单例类必须自己创建自己的唯一实例。 3,单例类必须给所有其他对象提供这一实例。
//饿汉式class Box{//1,私有化构造器private Box(){};//2,指向自己实例的静态私有引用private static Box box = new Box();//3,以自己实例为返回值的静态公有方法(暴漏给其他对象使用)public static Box getInfo(){return box;}}
//懒汉式class Dog{//1,私有化构造器private Dog(){};//2,指向自己实例的静态私有引用private static Dog dog = null;//3,以自己实例为返回值的静态公有方法(需考虑线程安全问题)public synchronized static Dog getInfo(){if (dog == null) {dog = new Dog();}return dog;}}
0 0