首页 > 代码库 > 设计模式——单例模式
设计模式——单例模式
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.区别:
相同点:都可以达到创建唯一一个实例对象的目的。
不同点:
饿汉模式单例不管实例是否使用,先创建一个唯一的实例并提供返回唯一实例的方法;饱汉模式单例只在实例被使用时,才创建实例;
饿汉模式单例没有多线程安全问题,饱汉模式单例有多线程安全问题。
设计模式——单例模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。