1、饿汉模块
package com.zhaochao.singleton;/** * 饿汉模式 * @author Administrator */public class SingletonManager { //静态成员变量,类加载时创建实例 private static SingletonManager instance=new SingletonManager(); //私有化构造函数,防止创建对象 private SingletonManager() {} //对外提供获取唯一对象方法 public static SingletonManager getInstance(){ return instance; }}
2.懒汉模块
package com.zhaochao.singleton;/** * 懒汉模式 * @author Administrator * */public class SingletionManager2 { //静态化成员变量,不创建对象 private static SingletionManager2 instance; //私有化构造函数 private SingletionManager2() {} //在使用时创建对象 public static SingletionManager2 getInstance(){ //线程不安全,当多个线程同时检测到对象都为null时,都会去创建对象,这样就不是单例了 if(instance==null){ instance=new SingletionManager2(); } return instance; }}
3.内部类模式
package com.zhaochao.singleton;/** * 升级版饿汉模式 * @author Administrator */public class SingletonManager3 { private SingletonManager3(){} private static class SingletonManagerHolder { private final static SingletonManager3 INSTANCE = new SingletonManager3(); } public static SingletonManager3 getInstance() { return SingletonManagerHolder.INSTANCE; }}