设计模式-----单例模式

单例模式:

主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。

单例模式能够保证一个类仅有唯一的实例,并提供一个全局访问点。

主要有以下特点:
  1. 确保自己只有一个实例。
  2. 必须自己创建自己的实例。
  3. 必须为其他对象提供唯一的实例。
懒汉式和饿汉式的区别:
  1. 恶汉模式的特点是加载类时会比较慢,但运行时获取对象的速度比较快。
  2. 懒汉模式的特点时加载类时会比较快,但运行时获取对象的速度相对慢。
  3. 恶汉模式时线程安全的,懒汉模式线程不安全。可以再方法中快使用关键字synchronized解决
懒汉式:懒得创建,用的时候再创建
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Singleton {
//私有实例,只能内部调用
private static Singleton instance=null;
//私有构造方法,防止外部创建实例 必须
private Singleton(){
}
/**
* 提供一个静态方法,供外部访问 返回当前实例
*
* 懒汉模式是线程不安全的,通过synchronized关键字解决
* 该关键字作用为当多个线程同时访问该方法的时候,必须等一个线程访问完,
* 才能进行访问,这就预防了多个线程同时访问而创建多个实例。
*/
public static synchronized Singleton getInstance(){
if(instance==null){
instance=new Singleton();
}
return instance;
}

}
懒恶汉式:管你用不用,先搞一个再说
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Singleto2 {
//私有构造方法,防止外部创建实例 必须
private Singleto2(){
}
//在自己内部定义自己的一个实例,只供内部调用
//final修饰,确保了该实例 不允许修改。
private static final Singleto2 instance = new Singleto2();

//提供了供外部访问的静态方法,可以直接访问
public static Singleto2 getInstance(){
return instance;
}
}

设计模式-----单例模式
http://yoursite.com/post/a5aa4f3b.html/
Author
Chase Wang
Posted on
August 15, 2018
Licensed under