首页 > 代码库 > 设计模式——单例模式

设计模式——单例模式

1.什么是设计模式?

设计模式,简单理解为,前人在开发过程中遇到了许多不同的问题,针对不同的问题提供了一套可复用性高,安全性高的代码规范或者范式。

2.什么是单例模式:

单例模式,是指使用这种方式创建的对象实例唯一。

3.饿汉模式单例:

 1 package com.asiainfo.test.singleTon;
 2 
 3 /**
 4  * 饿汉式单例
 5  * @author hasee
 6  *
 7  */
 8 public class MySingleton {
 9     //私有化构造方法
10     private MySingleton(){};
11     //创建实例
12     private static MySingleton ms = new MySingleton();
13     //提供获取实例的方法
14     public static MySingleton getInstance() {
15         return ms;
16     }
17 }

4.饱汉模式单例:

 1 package com.asiainfo.test.singleTon;
 2 
 3 /**
 4  * 饱汉式单例模式
 5  * @author hasee
 6  *
 7  */
 8 public class MySingleton2 {
 9     //私有化构造方法
10     private MySingleton2(){
11         
12     }
13      private static MySingleton2 ms2 = null;
14     
15     //如果对象为null才创建
16     public  static MySingleton2 getInstance() {
17         try {
18             if(ms2 == null) {
19                 synchronized(MySingleton2.class) {//因为饱汉式单例模式存在多线程安全问题。导致单例模式无效。所以这里要加同步代码块保证创建的实例唯一。
20                     ms2 = new MySingleton2();
21                 }
22             }
23         } catch (Exception e) {
24             e.printStackTrace();
25         } 
26         return ms2;
27     }
28     
29 }

 

5.区别:

相同点:都可以达到创建唯一一个实例对象的目的。

不同点:

饿汉模式单例不管实例是否使用,先创建一个唯一的实例并提供返回唯一实例的方法;饱汉模式单例只在实例被使用时,才创建实例;

饿汉模式单例没有多线程安全问题,饱汉模式单例有多线程安全问题。

设计模式——单例模式