学习设计模式系列之“单例模式”
单例模式(也叫单件模式)的作用就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个(当然也可以不存在)。
单例模式种类
饿汉式
声明的同时直接实例化。
特点
加载类时比较慢,但运行时获取对象的速度比较快,线程安全。
懒汉式
声明的时候不实例化。
特点
加载类时比较快,但运行时获取对象的速度比较慢,线程不安全。
实现单例模式的三个步骤
- 将构造方法私有化,不允许外界直接创建对象。
- 声明类的唯一实例,使用private static修饰。
- 提供一个供外界获取实例的方法,使用public static修饰。
代码实现
饿汉式java代码实现
public class Singleton
{
// 饿汉模式
// 1.创建类的唯一实例,使用private static修饰
private static Singleton instance = new Singleton();
// 2.构造函数设置成private,外界不能通过调用构造函数来创建对象
private Singleton()
{
}
// 3.提供一个用于获取实例的方法,使用public static修饰
public static Singleton getInstance()
{
return instance;
}
}
懒汉式java代码实现
public class Singleton_2
{
// 懒汉模式
// 1.创建类的唯一实例,使用private static修饰
private static Singleton_2 instance = null;
// 2.构造函数私有化,不允许外界通过构造函数生成对象
private Singleton_2()
{
}
// 3.提供一个用于获取实例的方法,使用public static修饰
public static Singleton_2 getInstance()
{
if (instance == null)
{
instance = new Singleton_2();
}
return instance;
}
}