设计模式---单例模式(懒汉、饿汉)

单例模式

单例模式:程序执行期间只有一个实例,servlet是一个单例模式
(原型模式/多例模式:每次获取都是新的对象)

懒汉模式

所谓懒汉模式就是,懒!!,既你不需要我就不创建,你需要的时候我再创建。
1、懒汉式—线程不安全:最基础的实现方式,线程上下文单例,不需要共享给所有线程,也不需要加synchronize之类的锁,以提高性能。
2、懒汉式—线程安全:加上synchronize之类保证线程安全的基础上的懒汉模式,相对性能很低,大部分时间并不需要同步
下面直接上代码,面试高发,手写一个单例模式

private static Singleton singleton;
	private Singleton(){}//私有构造方法使之必须通过getInstance实例化对象
	public static Singleton getInstance(){
		if(singleton==null){//判断为空时才实例化对象
			singleton = new Singleton();
		}
		return singleton;
	}
饿汉模式

与懒汉相反饿汉模式就是饿的不行,我先吃了再说。。。无论你下一步做什么操作,我都把所有的都创建了再说,不管你用不用。

private static Singleton singleton = new Singleton();
	private Singleton(){}//私有构造方法
	public static Singleton getInstance(){
		return singleton;
	}

总结

两个私有:私有化构造方法和实例。
一个公开:公开一个方法使之通过这个方法创建实例化对象。

补充一个大佬都推荐的单例(枚举单例)

public enum  EnumSingleton {
    INSTANCE;
    public EnumSingleton getInstance(){
        return INSTANCE;
    }
}

你可能感兴趣的:(单例模式,懒汉,饿汉)