第三条 Singleton 模式

原创 2016年05月30日 20:05:34

java 中 常用到的一种设计模式就是单利模式,常见的两种一种是懒汉式,一种是饿汉式


public class Singleton {


private static Singleton single = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return single;
}
}

和 

public class Singleton {

private static Singleton single = null;
private Singleton(){}
public static Singleton getInstance(){
if(single == null){
single = new Singleton();
}
return single;
}
}

懒汉式上述代码有个多线程并发问题,常见改进方法就是加入同步锁

public class Singleton {


private static Singleton single = null;


private Singleton() {
}


public static Singleton getInstance() {
if (single == null) {
synchronized (Singleton.class) {
if (single == null) {
single = new Singleton();
}
}
}
return single;
}
}



正常情况下,上述代码够用。但如果Singleton 类需要可序列化,仅仅在类上加入 implements Serializable 是不够的,java 提供了一个readResolve方法,

防止反序列化时创建新的实例。

private Object readResolve(){

return single ;

}


从 java 1.5发行版本,实现单利还有一种枚举法:

 public enum Singleton {  
    single ;  
   public void whateverMethod() {  
    }  
 }  

这种写法是effective java 该书的作者提出的,很有水平。实际生活中不常见。


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Effective Java 学习 第三条 用私有构造器或者枚举类型强化Singleton属性

介绍几种单例模式

C++完美实现Singleton模式

  • 2016-08-01 10:40
  • 102KB
  • 下载

Singleton---单例模式(创建型)

Singleton单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具...

java Singleton单例模式

  • 2010-06-21 09:07
  • 59KB
  • 下载

剑指Offer:面试题2 实现Singleton模式

/* 实现Singleton模式: 设计一个类,只能生成该类的一个实例 */ #include #include #include #include using namespace s...

单例模式、Singleton

C++完美实现Singleton模式

  • 2014-05-21 13:04
  • 16KB
  • 下载

单例模式(java 实现 Singleton)(一)

根据自己的理解说明一下单例模式的实现步骤(过程)
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)