单例模式(Singleton Pattern)
Posted mr-wenyan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例模式(Singleton Pattern)相关的知识,希望对你有一定的参考价值。
单例模式:
和new类似,用来创建实例。
单例对象的类保证了只有一个实例存在。
原理:
1、该类的构造函数定义为私有方法,这样外面不能通过new实例化此类,只能在类里面实例化
2、类返回一个获取实例的方法
构建方式:
懒汉方式:全局的单例实例在第一次被使用是创建
饿汉方式:全局的单例实例在类装载时构建
维基百科code例子:
饿汉方式创建:
public class Singleton { private static final Singleton INSTANCE = new Singleton(); // Private constructor suppresses private Singleton() {} // default public constructor public static Singleton getInstance() { return INSTANCE; } }
懒汉方式创建:
public class Singleton { private static volatile Singleton INSTANCE = null; // Private constructor suppresses // default public constructor private Singleton() {} //thread safe and performance promote public static Singleton getInstance() { if(INSTANCE == null){ synchronized(Singleton.class){ //when more than two threads run into the first null check same time, to avoid instanced more than one time, it needs to be checked again. if(INSTANCE == null){ INSTANCE = new Singleton(); } } } return INSTANCE; } }
以上是关于单例模式(Singleton Pattern)的主要内容,如果未能解决你的问题,请参考以下文章
二十三种设计模式(GOF23)详解1----单例模式(Singleton Pattern)