首页 > 代码库 > 设计模式之-单例模式
设计模式之-单例模式
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、
总结:懒汉式线程不安全,但可以通过方法内部加锁解决
饿汉式线程安全,可能创建一些用不到的类对象,浪费内存
设计模式之-单例模式