创建型设计-单例模式
Posted 秋天de枫叶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建型设计-单例模式相关的知识,希望对你有一定的参考价值。
声明一下:本文的文字多数文字都是来自网上,只有例子是自己写的。因为自我感觉还没有能力能够系统的解释一个模式,已经有现成的比较完善的说明,就不重复造轮子哈。
java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例(双重检查)三种。
单例模式有一下特点:
1、单例类只能有一个实例。
2、单例类必须自己自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
单例的类图非常简单:
例子:
懒汉式(线程不安全):
/**
* 懒汉式(线程不安全的)
*/
private static Singleton singleton;
private Singleton()
public static Singleton getInstance()
if(singleton==null)
singleton=new Singleton();
return singleton ;
懒汉式(线程安全):
/**
* 懒汉式(线程安全)
*/
private static Singleton singleton;
private Singleton()
public static synchronized Singleton getInstance()
if(singleton==null)
singleton=new Singleton();
return singleton ;
饿汉式:
/**
* 饿汉式
*/
private static Singleton instance = new Singleton();
private Singleton ()
public static Singleton getInstance()
return instance;
双重检查:(线程安全)
private static Singleton singleton;
private Singleton()
public static Singleton getInstance()
if(singleton==null)
synchronized(Singleton.class)
if(singleton==null)
singleton=new Singleton();
return singleton;
还有一种接触过的内部静态的单例模式:
/**
* 内部类单例
*/
private Singleton()
public static Singleton getInstance()
return SingletonHolder.sInstance;
private static class SingletonHolder
public static final Singleton sInstance=new Singleton();
以上是关于创建型设计-单例模式的主要内容,如果未能解决你的问题,请参考以下文章