`
wangcheng
  • 浏览: 1460550 次
  • 性别: Icon_minigender_1
  • 来自: 青岛人在北京
社区版块
存档分类
最新评论

创建Singleton的新方法(转)

    博客分类:
  • java
阅读更多

这个写法是Google公司的Bob lee搞的

java 代码 Lazy Loading Singletons
  1. public class Singleton {         
  2.         
  3.   static class SingletonHolder {         
  4.     static Singleton instance = new Singleton();         
  5.   }         
  6.         
  7.   public static Singleton getInstance() {         
  8.     return SingletonHolder.instance;         
  9.   }         
  10.         
  11. }     

相关内容

http://crazybob.org/2007/01/lazy-loading-singletons.html

http://www-128.ibm.com/developerworks/java/library/j-dcl.html?dwzone=java

http://www-128.ibm.com/developerworks/cn/java/j-lo-clobj-init/index.html

http://www.blogjava.net/dreamstone/archive/2006/11/04/79026.html

 

分享到:
评论

相关推荐

    singleton面试题转

    这种方式保证了类加载时不会立即创建Singleton实例,只有当getInstance()被调用时,内部类才会被加载,从而创建Singleton实例。 ```java public class Singleton { private Singleton() {} private static ...

    Qt qml Singleton 单例模式

    - 如果Singleton的实例已经被创建,再次尝试创建时,Qml引擎会返回已存在的实例,而不是创建新的。 - 如果Singleton需要在C++中初始化,可以使用`setObject`方法在C++侧设置Singleton的实例。 综上所述,Qt Qml的...

    Singleton

    在类的内部创建Singleton实例,但在类被加载时不初始化,而是等到第一次调用getInstance()时才初始化。这种方式线程不安全。 ```java public class Singleton { private static Singleton INSTANCE; private ...

    singleton Bean 创建 prototype Bean

    2. 每次请求Prototype Bean时,容器都会调用Bean的工厂方法或者构造函数来创建新的实例。 3. 如果Prototype Bean有依赖项,容器会递归地创建这些依赖的实例,直到所有依赖项都被满足。 在实际开发中,我们可以通过...

    singleTon单例模式的创建

    2. **私有构造函数**:`private SingleTon() {}` 构造函数被声明为私有的,这意味着不能通过 `new SingleTon()` 的方式从类的外部创建新的实例。 3. **公共静态方法**:`public static SingleTon getInstance() {.....

    Singleton 单件(创建型模式)

    4. **枚举 Singleton**:这是 Bill Pugh 提出的一种创建 Singleton 实例的方法,既能防止反序列化重新创建新的实例,又避免了同步问题。代码如下: ```java public enum Singleton { INSTANCE; public void ...

    前端大厂最新面试题-Singleton Pattern.docx

    例如,在创建一个模态框的时候,只有用户点击的时候才会创建,而不是加载完成之后再创建弹窗和隐藏,并且保证弹窗全局只有一个可以先创建一个通常的获取对象的方法,例如: ```js const getSingle = function( fn )...

    singleton.zip

    在多线程环境中,为了防止多个线程同时创建单例对象,可以将`getInstance()`方法声明为`synchronized`。这种方式确保了线程安全,但可能会降低性能,因为每次调用`getInstance()`都需要进行同步。 ```java public ...

    单例模式(singleton)

    实现单例模式的关键在于防止其他对象通过常规构造函数创建新的实例。这通常通过私有化构造函数和提供一个公共静态方法(称为单例工厂方法)来实现。在Java中,单例模式的实现有多种方式: 1. 饿汉式(Static ...

    C#面向对象设计模式纵横谈(2)Singleton 单件(创建型模式)

    在C#编程中,设计模式的应用尤为广泛,其中"Singleton"(单例)模式是一种创建型设计模式,我们今天就来详细探讨一下。 Singleton模式的主要目的是控制类的实例化过程,确保一个类在整个应用程序运行期间只有一个...

    深入浅出单例Singleton模式

    2. **序列化**:如果单例类实现了`Serializable`接口,需要处理反序列化时可能创建新实例的问题,通常在`readResolve()`方法中返回现有实例。 3. **懒汉式与饿汉式**:懒汉式(延迟初始化)在类加载时不创建实例,...

    C#设计模式之Singleton模式

    当多个线程并发访问Singleton的`Instance`方法时,可能会导致多个实例的创建。例如,在Main方法中创建大量并发任务调用`Instance`: ```csharp static void Main(string[] args) { int TOTAL = 10000; Task[] ...

    Singleton 单例模式的介绍以及解析

    当类的实例第一次被请求时,会创建一个对象并将其存储在一个静态变量中,后续的请求都会返回这个已经创建的对象,而不是创建新的实例。这样就保证了在整个程序运行过程中,该类只有一个实例存在。 线程安全是单例...

    Singleton模式

    2. **懒汉式(Lazy Initialization)**:在类被加载后,直到第一次调用getInstance方法时才创建实例,延迟了初始化,但是非线程安全。 ```java public class Singleton { private static Singleton instance; ...

    Python使用metaclass实现Singleton模式的方法

    在这里,我们检查类是否已经有一个实例(通过`hasattr(cls, 'instance')`),如果没有,就通过`super(Singleton, cls).__call__(*args, **kwargs)`调用父类(即`type`)的`__call__`方法来创建一个新实例,然后将这...

    创建型模式(除singleton)外的四种模式简单实例

    客户端通过调用`clone`方法创建新的对象,而无需知道具体的实现细节。 这些模式的应用可以提高代码的可扩展性和可复用性。比如,当我们需要添加新的形状或车辆类型时,只需要增加新的工厂类即可,无需修改现有代码...

    Java Singleton 实用教程(附源码)

    枚举的天然单例特性避免了所有线程安全问题,同时也防止了反序列化创建新实例。 在实际开发中,应根据项目需求选择合适的单例实现方式。例如,如果对性能要求较高,可以选择饿汉式或枚举;如果对内存占用敏感,可...

    singleton.zip单例的几种实现demo,

    如果单例实现了`Serializable`接口,那么在反序列化时会创建新的实例。为了解决这个问题,可以添加`readResolve()`方法: ```java public class Singleton implements Serializable { private static final long...

    通俗易懂spring之singleton和prototype.docx

    与Singleton相反,Prototype模式允许每次请求Bean时都创建一个新的实例。这意味着如果你在容器中多次获取一个`scope="prototype"`的Bean,每次都将得到一个新的对象。在修改后的`UserDao`例子中,我们将Bean的scope...

Global site tag (gtag.js) - Google Analytics