第三条 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 该书的作者提出的,很有水平。实际生活中不常见。


每天一题(48) - C++实现Singleton模式

饿汉模式 代码(1) //.h文件 class Singleton { public: static Singleton& GetInstance(); private: Singleton(){...
  • insistGoGo
  • insistGoGo
  • 2013年07月22日 19:37
  • 3382

设计模式-单例模式(Singleton)各种写法和分析比较

介绍单例模式是设计模式中比较简单容易理解的。它的出现主要是: 保证一个类仅有一个实例,并提供一个访问它的全局访问点 其实就在系统运行期间中保证只有这么一个实例,并能够全局访问。应用场景就是当需要一...
  • Card361401376
  • Card361401376
  • 2016年05月07日 23:51
  • 3807

C#设计模式——单例模式(Singleton)

一、引言 最近在设计模式的一些内容,主要的参考书籍是《Head First 设计模式》,同时在学习过程中也查看了很多博客园中关于设计模式的一些文章的,在这里记录下我的一些学习笔记,一是为了帮助我更深...
  • ycl295644
  • ycl295644
  • 2015年07月06日 08:53
  • 2014

C++设计模式5--单例模式Singleton--当前对象只有一个实例

很多情况下,我们在开发项目的过程中,都希望自己运行的某个部件只有一个实例, 比如我们天天用QT开发界面,QTCreate里帮助菜单下的关于Qt Create菜单,弹出来的关于对话框,在QTCreate...
  • gatieme
  • gatieme
  • 2014年01月08日 13:25
  • 21429

Linux系统C++中多线程Singleton的实现

我想关于Singleton模式的实现和资料很多很多,这里为什么专门拿出来写一写,还是因为个人觉得要想把单例模式写好还真不是一件容易的事情。 其中涉及到不少编译和底层的知识。这里以Linux平台为例,...
  • acs713
  • acs713
  • 2014年06月04日 16:26
  • 1364

C++中实现singleton(单例模式)的最简单写法

前几天看了 Java中实现singleton的写法,就想在C++中实现一下,找了很多资料,看了各个牛人写的不同版本,但最后在stack overflow上找到了一个最简单的写法,现在贴出来以供参考: ...
  • flybird19870326
  • flybird19870326
  • 2014年03月04日 16:50
  • 1895

单例模式中的懒汉模式和饿汉模式的最优写法

废话不多说,直接上最优写法: 懒汉模式: class Singleton { private volatile static Singleton singleton; pri...
  • liufangbaishi2014
  • liufangbaishi2014
  • 2016年11月07日 22:01
  • 451

设计模式:单例模式(Singleton)

单例模式在23个设计模式中算得上是最简单的一个了,也行你会有异议,那就换成“最简单之一”,这样就严谨了很多。   单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。   适用性:当类...
  • u013256816
  • u013256816
  • 2016年03月23日 21:37
  • 4747

Java 写一个单例模式(Singleton)出来

第一种:饱汉模式 public class SingleTon {  private SingleTon(){ } //实例化放在静态代码块里可提高程序的执行效率,但也可能更占用空间 ...
  • zpf336
  • zpf336
  • 2014年09月25日 21:41
  • 7806

单例模式(Singleton )的几种用法以及使用条件

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的...
  • yin767833376
  • yin767833376
  • 2017年01月12日 16:40
  • 860
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第三条 Singleton 模式
举报原因:
原因补充:

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