首页 > 代码库 > 设计模式之-单例模式

设计模式之-单例模式

1.单例设计模式

一、单例模式的介绍
Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点

1.单例设计模式
所谓单例设计模式简单说就是无论程序如何运行,采用单例设计模式的类(Singleton类)永远只会有一个实例化对象产生。具体实现步骤如下:
(1) 将采用单例设计模式的类的构造方法私有化(采用private修饰)。
(2) 在其内部产生该类的实例化对象,并将其封装成private static类型。
(3) 定义一个静态方法返回该类的实例。

2、有两种形式:懒汉式和饿汉式

饿汉式

public class SingletonTest1 { 

    private SingletonTest1() { 

    }
    private static final SingletonTest1 instance = new SingletonTest1();
    public static SingletonTest1 getInstancei() {
        return instance;
    }
}

懒汉式

public class SingletonTest2 {
    private SingletonTest2() {
    }

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

改进的懒汉式

public class SingletonTest4 {
    private static SingletonTest4 instance;
    private SingletonTest4() {
    }
    public static SingletonTest4 getIstance() {
        if (instance == null) {
            synchronized (SingletonTest4.class) {
                if (instance == null) {
                    instance = new SingletonTest4();
                }
            }
         }
         return instance;
      }
}

二、

1、用到单例模式的情况:连接池、读取配置文件的类用单例

2、

总结:懒汉式线程不安全,但可以通过方法内部加锁解决
饿汉式线程安全,可能创建一些用不到的类对象,浪费内存

 

设计模式之-单例模式