您的位置:首页 > 编程语言 > Java开发

Java 五种单例模式的实现

2018-02-28 00:00 274 查看
摘要: 后续完善

一: 懒汉式

/**
*
* 懒汉式单例模式
*
* 特点:
*      1.延迟加载
*      2.使用时初始化
*      3.线程不安全
*
*/
public class Singleton1 {

private static Singleton1 instance;

private Singleton1(){}

public static Singleton1 getInstance(){
if (instance == null){
instance = new Singleton1();
}
return instance;
}
}

二:饿汗式

/**
*
* 饿汉式单例模式
*
* 特点:
*      1.基于单ClassLoder机制,instance在类加载时进行初始化,避免了同步问题
*      2.优势在于实现简单,劣势在于不是懒加载模式
*      3.在需要实例之前就完成了初始化,在单例较多的情况下,会造成内存占用,加载速度慢问题
*
*
*/
public class Singleton2 {

private static final Singleton2 instance = new Singleton2();

private Singleton2(){}

public static Singleton2 getInstance(){
return instance;
}
}

三:双重校验锁

/**
*
* 双重校验锁单例模式
*
* 特点:
*      1.
*
*
*/
public class Singleton3 {

private static Singleton3 instance = null;

private Singleton3(){}

public static Singleton3 getInstance() {
if (instance == null) {
synchronized (Singleton3.class) {
if (instance == null) {
instance = new Singleton3();
}
}
}
return instance;
}
}

四:静态内部类

/**
*
*  静态内部类单例模式
*
*
*/
public class Singleton4 {

public static Singleton4 instance = new Singleton4();

private Singleton4(){}

public static Singleton4 newInstance(){

return Singleton4.instance;
}
}

五:枚举单例模式

/**
*
*  枚举单例模式
*  这种方式有待研究
*
*/
public enum  Singleton5 {

instance;

public void whateverMethod(){}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 单例设计模式