设计模式二:单例模式
一.什么是单例模式
单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问.
二.单例模式要点
以下三点:一是单例模式的类只提供私有的构造函数,二是类定义中含有一个该类的静态私有对象,三是该类提供了一个静态的共有的函数用于创建或获取它本身的静态私有对象。
三.单例模式的类图
四.代码
有三种形式的代码,根据具体的情况选择;
《一》懒汉模式
注:懒汉模式,要在第一次被引用的时候,才进行实例的初始化;但是,是线程不安全的;
class Singleton{
private Singleton singleton = null;
private Singleton(){
}
public static Singleton getIntance(){
if(singleton == null){
singleton = new Singleton();
}
return singleton;
}
}
《二》饿汉模式
注:静态初始化,在类被加载的时候就进行初始化;
class Singleton{
private static final Singleton singleton = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return singleton;
}
}
《三》双重锁定模式
注:是线程安全的;
class Singleton{
prviate Singleton singleton = null;
private Singleton(){}
public static Singleton getInstance(){
if(singleton == null){
synchronized(Singleton.class){
if(singleton == null){
singleton = new Singleton();
}
}
}
return singleton;
}
}