设计模式之一 ------------单例模式
来源:互联网 发布:棉被芯什么牌子好 知乎 编辑:程序博客网 时间:2024/06/05 14:23
单例模式—懒汉式
package com.penlei.single;/** * 单例的懒汉模式 * @author penglei */public class SingletonOne {/** * 提前创建单例的唯一实例 */ private static SingletonOne singletonOne = new SingletonOne(); //私有的构造方法 private SingletonOne(){ } public static SingletonOne getSingletonOne(){ return singletonOne; }}
单例模式—饿汉式
package com.penlei.single;/** * 单例的饿汉模式 * @author penglei */public class SingletonTwo {/** *设置实例为空,用到实例时再创建 */ private static SingletonTwo singletonTwo = null; //私有的构造方法private SingletonTwo(){}public static SingletonTwo getSingletonTwo(){ //第一次判断singletonOne是否为空 用来提高执行的效率 if(singletonTwo == null){ //对对象加锁,解决同步问题 synchronized (singletonTwo .class) { if(singletonTwo == null){ //第二次判断singletonTwo 是否为空,用来实现同步功能 singletonTwo = new SingletonTwo(); } } } return singletonTwo;}}
单例模式—–登记式
登记式单例类是为了克服饿汉式单例类和懒汉式单例类不可继承的缺点而设计的。 package com.penlei.single;import java.util.HashMap;/** * 登记式单例 * @author penglei */public class RegSingleton { private static HashMap registry = new HashMap(); /** * 静态代码块,会优于主方法执行,且会优于构造方法,而且不管产生多少对象,静态代码块只执行一次。 */ static{ RegSingleton regSingleton = new RegSingleton(); registry.put(regSingleton.getClass().getName(), regSingleton); } /** * 构造方法为保护类型,可以进行继承 */ protected RegSingleton(){ } public static RegSingleton getInstance(String name) { if(name == null){ name = "com.penlei.single.RegSingleton" ; } if(registry.get(name) == null){ try { registry.put(name, Class.forName(name).newInstance()); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return (RegSingleton) registry.get(name); }}
0 0
- 设计模式之一 :单例设计模式
- 设计模式之一 单例设计模式
- 设计模式之一 单例设计模式
- 设计模式之一:单例模式
- IOS设计模式之一:单例模式
- IOS设计模式之一:单例模式
- IOS设计模式之一:单例模式
- 设计模式之一:单例模式
- IOS设计模式之一:单例模式
- 大话设计模式之一:单例模式
- java设计模式之一“单例模式”
- 设计模式之一单例模式
- IOS设计模式之一:单例模式
- 设计模式之一 -----单例模式
- iOS设计模式之一:单例模式
- 设计模式之一 ------------单例模式
- 设计模式之一(单例模式)
- 设计模式之一单例模式
- [Shader]NGUI与粒子系统
- Eclipse m2e报Plugin execution not covered by lifecycle configuration
- 金融系列14《QPBOC交易流程》
- POJ 2777 Count Color 线段树无位运算
- 李红霞作业第二章14题
- 设计模式之一 ------------单例模式
- 【万里征程——Windows App开发】ListView&GridView之分组
- UVa 11584 - Partitioning by Palindromes [动规]
- 讨论main函数执行结束后还能在执行一段代码吗?
- 多态和重载的区别
- iOS开发中的绘图-Quartz2D-
- Java实现字符数组单词反转
- 语法小问题
- Python笔记——类定义