重温三种创建单例模式的方式(面试)

Posted 天山聊财经

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重温三种创建单例模式的方式(面试)相关的知识,希望对你有一定的参考价值。

一,饿汉式(第一次调用就创建对象占用内存空间)

public class EHan { public EHan() { }    private static EHan eHan=new EHan();//直接创建对象
public static EHan geteHan() { return eHan;    }}


二,懒汉式(需要创建对象时才创建,否则不占用内存空间)

(1) 单线程懒汉式

public class LanHan { public LanHan() { }
private static LanHan lanHan;
public static LanHan getLanHan() { if (lanHan==null){            return new LanHan();//调用时才创建对象 } return lanHan; }}

(2) 考虑线程安全懒汉式

public class LanHan { public LanHan() { }
private static volatile LanHan lanHan;//volatile保证所有线程可见
public static LanHan getLanHan() { synchronized (LanHan.class) {//加锁防止创建多个对象 if (lanHan == null) { return new LanHan();            } } return lanHan; }}

(3) 兼顾效率和线程安全懒汉式

public class LanHan { public LanHan() { }
private static volatile LanHan lanHan;
public static LanHan getLanHan() {        if (lanHan == null) {//避免每次调用对象都加锁排队浪费时间 synchronized (LanHan.class) { if (lanHan == null) { return new LanHan(); } } } return lanHan; }}


三,枚举式(effective java推荐使用)

public enum EasySingleton{ INSTANCE;}


以上是关于重温三种创建单例模式的方式(面试)的主要内容,如果未能解决你的问题,请参考以下文章

单例模式创建的三种方式

设计模式:单例模式的三种创建方式及其各自的优缺点

python实现单例模式的三种方式及相关知识解释

单例模式,这个面试题真那么简单吗?

设计模式之单例模式(三种实现方式)

面试篇手写单例模式及原理剖析