设计模式之单例模式

117 阅读1分钟

什么是单例模式?

单例模式是常用的设计模式,在我们的系统乃至在框架中都普遍被用到,单例模式就是使一个类有且只有一个实例用于外部访问,这样大大的节省了系统的资源,而单例模式需要注意的也就以下三点:
  • 保证这个类有且只有一个实例
  • 自行创建这个实例
  • 提供这个实例供外部访问

代码实现需要注意的就是

  • 单例模式的类构造方法私有化
  • 这个类的定义中包含自己的一个静态实例对象
  • 提供一个共有静态方法供外部调用

三种实现方式

1、懒汉式

懒汉式与延迟初始化有些相似,就是没人用的时候我不实例化出来,有人需要调用了我再实例化出来,JAVA代码实现如下

public class SingletonClz{
    //实例
    private static SingletonClz instance = null; 
    //私有构造
    private SingletonClz(){}
    //外部调用方法
    public static getInstance()
    {
        if(null == instance)
        {
            instance = new SingletonClz(); 
            return instance;  
        }
        else
        {
            return instance;
        }
    }
}

2、饿汉式

先实例化出来,有人用就直接返回即可

public class SingletonClz{
    //实例
    private final static SingletonClz INSTANCE = new SingletonClz(); 
    //私有构造
    private SingletonClz(){}
    //外部调用方法
    public static getInstance()
    {
         return instance;
    }
}

3、加锁的单例模式

public class SingletonClz{
    //实例
    private static volatile SingletonClz instance = null; 
    //私有构造
    private SingletonClz(){}
    //外部调用方法
    public static getInstance()
    {
        synchronized(SingletonClz.class)
        {
            if(null == instance)
            {
                instance = new SingletonClz();  
            }
        }
            return instance;
    }
}

4、内部类

public class Singleton {
    private Singleton() {}
    private static class InnerSingleton {
        private static Singleton instance = new Singleton();
    }
    public static Singleton getInstance() {
        return InnerSingleton.intance;
    }
}