Singleton是众多设计模式中最容易理解的一种,也是众多设计模式中较为重要的一种设计模式。
Singleton模式实现的重点在于将构造函数私有化(private),并通过提供静态公有函数(public synchronized static xxx getInstance)来获取定义在类中的静态私有成员(private static xxx instance),通过一个简单的判断静态实例是否为空来控制这个类只能够new一次,即控制了一个类只能有单个实例
单例模式分为饿汉式、懒汉式,其中懒汉式涉及到多线程安全问题,解决方法加同步锁synchronized,有两种实现方式。
package com.study.dp.singleton;
/**
* 静态内部类实现单例模式
* @author CrazyPig
*
*/
public class SpecialSingleton {
// 静态内部类
private static class NestClass {
private static SpecialSingleton instance;
static {
instance = new SpecialSingleton();
}
}
// 不能直接new
private SpecialSingleton() {
}
public static SpecialSingleton getInstance() {
return NestClass.instance;
}
public static void main(String[] args) {
SpecialSingleton instance = SpecialSingleton.getInstance();
SpecialSingleton instance01 = SpecialSingleton.getInstance();
SpecialSingleton instance02 = SpecialSingleton.getInstance();
}
}