设计模式

单例模式

一、单例模式简介

什么是设计模式?
设计模式是一套被反复使用,多数人知晓的,经过分类编目的,代码设计经验总结。
目的:使用设计模式是为了重用代码,让代码更容易的被人理解,保证代码的可靠性》

什么是单例模式:有且仅有一个实例。
有些对象我们只需要一个,比如:配置类、工具类、线程池、缓存、日志对象等,如果创造出多个实例就会出现问题,比如:占用过多的资源,不一致的结果。

二、单例模式的实现

单例模式分为:懒汉式和饿汉式

1、懒汉式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Singleton {

//1、私有化构造方法,隐藏该构造器,不被外部调用
private Singleton(){

}

//2、缓存已经创建的实例
private static Singleton singleton = new Singleton();

//3、向外提供一个可以访问的方法以获取实例,该类可以加入自定义的控制,保证只产生一个Singleton对象
public static Singleton getInstance(){
return singleton;
}
}
(1)、只允许创建一个类,应该为了避免程序自由创建该类,使用private修饰构造方法,从而将该构造方法隐藏起来。
(2)、类的构造方法被隐藏则需要提供一个public方法访问点,用于创建该类的对象,且该方法必须是static的,因为在调用该方法之前还不存在对象。
(3)、该类还必须缓存已经创建好的类。

之所以叫饿汉式,因为其在类加载时就 创建,有点猴急,较为饥渴。

2、懒汉式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Singletonl {
//1、私有化构造方法
private Singletonl() {

}
//2、定义一个私有静态变量,缓存已经创建的实例
private static Singletonl singleton;

//3、向外提供一个可以访问的方法以获取实例,该类可以加入自定义的控制,保证只产生一个Singleton对象
public static Singletonl getInstance() {
if (singleton==null){
singleton = new Singletonl();
}
return singleton;

}
}
之所叫懒汉式,实例在调用时才创建。

三、饿汉式与懒汉式比较

    1、饿汉式在类的加载时较慢,但是在运行时获取对象的速度较快,更为重要的是他是线程安全的;
2、懒汉式在类的加载时较快,但是在运行时获取对象的速度较慢,且是线程不安全的。

—结束

文章目录
  1. 1. 一、单例模式简介
  2. 2. 二、单例模式的实现
    1. 2.0.0.1. 1、懒汉式
    2. 2.0.0.2. 2、懒汉式
  • 3. 三、饿汉式与懒汉式比较