目录
1.到底什么是设计模式?
设计模式可以理解为别人成功的故事,通用的套路,前人的经验,设计模式是一种思想,没有具体的实现。
2.什么是单例设计模式?
打一个比方:世界上只有一个太阳,一个月亮,单列设计模式就是体现这个特点,程序中的对象只能被创建一次,并且
提供一个全局的访问点。
3.单列设计模式的两种实现方式
整体思路
- 私有化该类的构造函数
- 通过new在本类中创建一个本类对象
- 定义一个公有的方法,将在该类中所创建的对象返回
饿汉式
private 单列模式()
{
}
private static final 单列模式 instance = new 单列模式(); //构建单列
//得到一个实例
public static final 单列模式 getInstance()
{
return instance;
}
饿汉式,在类创建的时候就被初始化,线程安全
懒汉式(线程不安全)
区别
- 在类需要被创建的时候再初始化
这样节约了一些资源,但是线程不安全,因为创建的时候会对instance进行判断是否为null。
private 单例模式线程安全二 (){};
private static final 单例模式线程安全二 instance =null; //构建单列
public static final 单例模式线程安全二 getInstance()
{
if(instance==null)
{
return new 单例模式线程安全二();
}
else
{
return instance;
}
}
4.线程安全的写法
饿汉式
private 单例模式线程安全一 (){};
private static final 单例模式线程安全一 instance = new 单例模式线程安全一(); //构建单列
public static final 单例模式线程安全一 getInstance()
{
synchronized(单例模式线程安全一.class)
{
return instance;
}
}
懒汉式(线程安全)
private 单例模式线程安全二 (){};
private static final 单例模式线程安全二 instance =null; //构建单列
public static final 单例模式线程安全二 getInstance()
{
synchronized(单例模式线程安全二.class)
{
if(instance==null)
{
return new 单例模式线程安全二();
}
else
{
return instance;
}
}
}
这种方式是兼顾效率和安全的。