博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
5种单例模式
阅读量:7304 次
发布时间:2019-06-30

本文共 2318 字,大约阅读时间需要 7 分钟。

hot3.png

/** * 懒汉单例模式 */public class Singleton_1 { 	private static Singleton_1 uniqueSingleton;		private Singleton_1 () {}		public static Singleton_1 getInstance() {		if (null == uniqueSingleton) {			uniqueSingleton = new Singleton_1();		}		return uniqueSingleton;	} } /** * 同步单例模式 */public class Singleton_2 { 	private static Singleton_2 uniqueSingleton;		private Singleton_2() {}		public static synchronized Singleton_2 getInstance() {		if (null == uniqueSingleton) {			uniqueSingleton = new Singleton_2();		}		return uniqueSingleton;	}	}/** * 饿汉单利模式 */public class Singleton_4 {		private static Singleton_4 uniqueSingleton = new Singleton_4(); 	private Singleton_4() {}		public static Singleton_4 getInstance() {		return uniqueSingleton;	}	} public enum Singleton_5 {	INSTANCE; 	private SingletonBean uniqueSingleton;		private Singleton_5() {		uniqueSingleton = new SingletonBean ();	}		public SingletonBean getInstance() {        return uniqueSingleton;    }}public class SingletonBean { }/** * 双重检查锁单利模式 */public class Singleton_3 {		private volatile static Singleton_3 uniqueSingleton; 	private Singleton_3() {}		public static Singleton_3 getInstance() {		if (null == uniqueSingleton) {			synchronized (Singleton_3.class) {				if (null == uniqueSingleton) {					uniqueSingleton = new Singleton_3();				}			}		}		return uniqueSingleton;	} }/** * 测试单例模式 */public class SingletonTest { 	public static void main(String[] args) {		// TODO Auto-generated method stub				Singleton_1 instance1_1= Singleton_1.getInstance();		Singleton_1 instance1_2= Singleton_1.getInstance();		System.out.println(instance1_1 == instance1_2); 		Singleton_2 instance2_1= Singleton_2.getInstance();		Singleton_2 instance2_2= Singleton_2.getInstance();		System.out.println(instance2_1 == instance2_2);				Singleton_3 instance3_1= Singleton_3.getInstance();		Singleton_3 instance3_2= Singleton_3.getInstance();		System.out.println(instance3_1 == instance3_2);				Singleton_4 instance4_1= Singleton_4.getInstance();		Singleton_4 instance4_2= Singleton_4.getInstance();		System.out.println(instance4_1 == instance4_2);				SingletonBean instance5_1= Singleton_5.INSTANCE.getInstance();		SingletonBean instance5_2= Singleton_5.INSTANCE.getInstance();		System.out.println(instance5_1 == instance5_2);			} }

 

转载于:https://my.oschina.net/u/200350/blog/3048506

你可能感兴趣的文章
MySQL点滴
查看>>
Servlet学习笔记03——什么是DAO?
查看>>
AOJ673 聪明的输入法(字典树)
查看>>
Github常见错误
查看>>
板子集合
查看>>
第四十一课、编辑交互功能的实现------------------狄泰软件学院
查看>>
cocos2d-x之监听手机的物理按键
查看>>
python数据处理excel和pdf,并打包成exe
查看>>
基于 HTML5 WebGL 的低碳工业园区监控系统
查看>>
如何使绝对定位内部元素不继承父级宽度,而是靠内容自动撑开宽度(转载)
查看>>
《程序猿的生命周期》阅读有感
查看>>
重温排序算法
查看>>
Instrumentation 功能介绍(javaagent)
查看>>
Core J2EE Patterns - Data Access Object
查看>>
SpringCloud学习成长之路 六 cloud配置中心
查看>>
MyEclipse定位class文件
查看>>
STM32(HY-SRF05)超声波测距项目
查看>>
《practical Java》读书笔记
查看>>
数据库字段顺序的【坑】
查看>>
spring5新响应式框架-webflux实战
查看>>