马士兵设计模式笔记1之单例的几种实现方式
来源:互联网 发布:软件测试测试方法 编辑:程序博客网 时间:2024/05/14 21:13
//第一种 classic
public class Singleton{
private static Singleton uniqueInstance;
//other useful instance variables here
private Singleton(){}
public static Singleton getInstance(){
if(uniqueInstance==null){
uniqueInstance=new Singleton();
}
return uniqueInstance;
}
}
//第二种 synchronize
public class Singleton{
private static Singleton uniqueInstance;
//other useful instance variables here
private Singleton(){}
public static synchronized Singleton getInstance(){
if(uniqueInstance==null){
uniqueInstance=new Singleton();
}
return uniqueInstance;
}
}
//第三种 eagerly create
public class Singleton{
private static Singleton uniqueInstance=new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return uniqueInstance;
}
}
//第四种 双检锁
public class Singleton{
private volatile static Singleton uniqueInstance;
private int field1,field2;
private Singleton(){
//initialization
}
public static Singleton getInstance(){
if(uniqueInstance==null){
synchronized (Singleton.class){
if(uniqueInstance==null){
uniqueInstance=new Singleton();
}
}
}
return uniqueInstance;
}
}
//第五种 lazy initiaization holder class
public class SingletonFactory{
private static class SingletonHolder{
public static Singleton instance=new Singleton();
}
public static Singleton getInstance(){
return SingletonHolder.instance;
}
}
//第六种 Enum Singleton
public enum Elvis{
INSTANCE;
public void leveTheBuiling(){
//.............
}
}
0 0
- 马士兵设计模式笔记1之单例的几种实现方式
- 常用设计模式-单例的几种实现方式
- 设计模式之单例模式简介与几种实现方式
- 设计模式——单例模式的几种实现方式
- 设计模式—单例模式的几种实现方式
- Python3之实现单例模式de几种方式
- 【Android进阶】设计模式------Singleton单例的几种实现方式
- 设计模式之单例模式的几种写法
- 单例模式几种实现方式
- 设计模式之(Singleton)单例模式的几种实现
- 单例模式的几种实现方式的对比
- 单例模式singleton的几种实现方式
- 单例模式的几种实现方式
- 单例模式的几种实现方式
- 单例模式的几种实现方式比较
- C#单例模式的几种实现方式
- 单例模式的几种实现方式总结
- 单例模式的几种实现方式
- Windows下安装以及配置nginx
- What are some good libraries for dynamic Bayesian networks
- Android学习——ActivityManager与Proxy模式的运用
- nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器
- 七月算法机器学习笔记2 数理统计与参数估计
- 马士兵设计模式笔记1之单例的几种实现方式
- 待解决问题合集
- YouKu iOS笔试题一
- 运行BinaryNet代码中遇到的问题
- POJ 3669
- (Algorithm)不相交集(Disjoint-set)
- 最少跳数到达末尾(Jump Game)
- Hibernate HQL
- hdu1358kmp串循环节