设计模式——单例模式
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.区别:
相同点:都可以达到创建唯一一个实例对象的目的。
不同点:
饿汉模式单例不管实例是否使用,先创建一个唯一的实例并提供返回唯一实例的方法;饱汉模式单例只在实例被使用时,才创建实例;
饿汉模式单例没有多线程安全问题,饱汉模式单例有多线程安全问题。
posted on 2017-02-04 03:11 lukelin1989 阅读(148) 评论(0) 编辑 收藏 举报