`
weishuwei
  • 浏览: 324804 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

3种单例模式对比

阅读更多

模式一:

class Singleton2 {
 
 private Singleton2(){
 }
 
 private static Singleton2 instance;

 public static Singleton2 getInstance() {
  if(instance==null){
   instance=new Singleton2();
  }
  return instance;
 }

}
不用说,大家也知道,这种在单线程程序中是没什么问题的,但多线程程序中,则可能会创建出2个或多个对象.

模式二:

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

}
这种很显然没有前者的问题,也是值得推崇的方式.

模式三:

public class Singleton {

 private static class SingletonHolder {
  static Singleton instance = new Singleton();
 }

 public static Singleton getInstance() {
  return SingletonHolder.instance;
 }

}
这又是一种单例实现方式,但不太明白和模式二对比,那个更好一点???显然模式三多创建了一个对象.??疑问中

分享到:
评论
5 楼 Eastsun 2007-04-27  
模式3中的lazy initialization方法在《Effective JAVA》的线程一章里面讲到了滴说
4 楼 dovecat 2007-04-27  
Eastsun 写道
《Effective Java》上有滴说~
恩,只展现了模式1和2
3 楼 Eastsun 2007-04-27  
《Effective Java》上有滴说~
2 楼 dovecat 2007-04-26  
2楼正解!
在模式2中,不管我们是不是调用getInstance()都会存在一个实例在内存中,而在模式3中,只有我们调用了getInstance(),才会创建唯一的实例到内存中.并且也解决了模式1中多线程的问题.解决的方式是利用了Classloader的特性.
1 楼 dennis_zane 2007-04-26  
模式三是为了解决多线程下实现延迟初始化的singleton模式

相关推荐

    单例模式的八种写法比较

    android资料 单例模式的八种写法比较 单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。

    Java 单例模式.pptx

    单例模式是一种常用的软件设计模式,在这种模式中,一个类只能拥有一个实例,并且该类必须自行创建并提供这个实例。通常,单例模式用于确保某个类在整个应用程序生命周期中只存在一个实例,这有助于节省资源并简化对...

    Java设计模式之单例模式

    目录 单例模式的概念 单例模式的要点 单例模式类图 单例模式归类 单例模式的应用场景 单例模式解决的问题 单例模式的实现方式 单例模式实现方式对比 单例模式的概念 单例模式,顾名思义就是只有一个实例,并且由它...

    单例模式实现mdi界面子窗体控制

    首先向关注过我这个系列...这立刻让我想到了最常用也是最简单最容易理解的一个设计模式 单例模式 何为 单例模式 ? 故名思议 即 让 类 永远都只能有一个实例。 由于 示例代码 比较简单 我也加了注释,这里就不在赘述

    单例模式Java实现

    单例模式是软件设计模式中的一种基础模式,它在Java编程中被广泛使用。这个模式的主要目的是限制类的实例化,确保在整个程序运行过程中,该类只有一个实例存在。这样可以节省系统资源,尤其是在全局范围内只需要一个...

    java中的单例模式

    Java中的单例模式是一种设计模式,它用于保证一个类只有一个实例,并提供一个全局访问点。这种模式在系统中需要控制实例数量,特别是当这个实例需要频繁地被多个对象共享时非常有用,例如数据库连接池、线程池或者...

    Java中的五种实现方法【单例模式】

    在Java编程语言中,单例模式是一种常用的软件设计模式,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在系统中需要频繁创建和销毁对象时,或者对象的创建过程比较昂贵时,特别有用。单例...

    关于单例模式的知识要点

    单例模式是软件设计模式中的一种,其主要目的是控制类的实例化过程,确保一个类在整个应用程序中只有一个实例存在。这种模式在很多场景下都非常有用,例如管理共享资源、配置对象或者全局日志服务等。下面我们将深入...

    Java设计模式-单例模式详解

    单例模式是 Java 设计模式中的一种常用的设计模式,旨在保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式的目的是为了保证在一个进程中,某个类有且仅有一个实例。 实现单例模式的步骤: 1. 只有 ...

    单例模式示例

    单例模式是软件设计模式中的一种,用于控制类的实例化过程,确保一个类在整个程序运行期间只有一个实例存在。这种模式常被用于管理共享资源,如数据库连接、线程池或者配置文件等,以减少系统资源的浪费并提高效率。...

    单例模式 工厂模式DEMO

    3、两种比较器以及sort()方法的重载: 结论:Icomparable接口在需要比较的类中实现;Icomparer接口在任何类中实现,使用时只需将这个类的对象作为参数传给Sort()就行。 4、接口的使用 结论:接口作为参数,即接口的...

    设计模式之单例模式

    单例模式是软件设计模式中的一种经典模式,它在许多实际场景中被广泛使用,尤其在需要控制类的实例只有一个的情况下。单例模式确保无论在程序的任何地方,只要通过特定方式请求创建该类的对象,始终只会返回同一个...

    单例模式分享-吴昌良

    3. **单例模式的优缺点**:讨论单例模式的优点与潜在的问题。 #### 七、总结 通过以上内容的学习,我们可以看到单例模式是一种非常实用的设计模式,尤其适用于需要确保全局唯一实例的场景。掌握单例模式不仅可以...

    浅谈Spring单例Bean与单例模式的区别

    本文主要介绍了Spring单例Bean与单例模式的区别,通过对比两者的定义、实现机制和应用场景,帮助读者更好地理解这两种概念的异同。 一、单例模式的定义和实现 单例模式是一种创建型设计模式,它的主要特点是确保在...

    ava常用设计模式-单例模式

    单例模式有多种实现方式,以下是四种常见的实现方式: 1. 饿汉式 饿汉式是最简单的单例模式实现方式。其优点是没有加锁,执行效率会提高。但是,它的缺点是类加载时就初始化,浪费内存。 ``` public class ...

    单例模式(讲解单例模式)

    单例模式是一种设计模式,它的核心目标是确保一个类在整个应用程序中只有一个实例存在,并提供一个全局访问点。这种模式在需要频繁创建和销毁对象,或者对象创建代价较大,且需要全局共享状态的情况下非常有用。 在...

    设计模式_创建型_单例模式.md

    单例模式是软件设计模式中的一种,属于创建型模式。单例模式的目的是确保一个类在任何时候都只有一个实例,并且提供一个全局访问点给外部程序使用。 ## 单例模式的定义 单例模式是一种常用的软件设计模式,通过单例...

    PHP 单例模式解析和实战

    以下是一个简单的数据库访问例子,对比普通的方法和使用单例模式的方法: ##### 1、普通的数据库访问例子 ```php // 初始化一个数据库句柄 $db = new DB(); // 添加用户信息 $db->addUserInfo(); // 在函数中...

Global site tag (gtag.js) - Google Analytics