`
Polymorphic
  • 浏览: 763 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Singleton设计模式之java

    博客分类:
  • java
阅读更多
   今天看了陈皓关于Singleton设计模式的解说感触颇深,下面我就关于看完了那篇博文之后Singleton设计模式我的看法。
    单实例Singleton设计模式可能是被讨论和使用的最广泛的一个设计模式了,这可能也是面试中问得最多的一个设计模式了。这个设计模式主要目的是想在整个系统中只能出现一个类的实例。下面我们就程序说话。
    public class Singleton {
private static Singleton singleton;

private Singleton() {
}

public static Singleton getInstence() {
if (singleton == null) {
singleton = new Singleton();
}
return singleton;
}
}
我们看这个程序确实实现了单例模式,但是我们有没有想过要是在多线程中的话呢,虽然在多线程中出现问题的可能性非常小,但是作为一个严谨程序员我们必须应该考虑到,那么该怎么解决呢。于是就有了下面的程序:
public class Singleton {
private static Singleton singleton;

private Singleton() {
}

public static Singleton getInstence() {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
return singleton;
}
}
这确实考虑考到了线程的问题,我们本来只是想让new这个操作并行就可以了,现在,只要是进入getInstance()的线程都得同步啊,注意,创建对象的动作只有一次,后面的动作全是读取那个成员变量,这些读取的动作不需要线程同步啊。这样的作法感觉非常极端啊,为了一个初始化的创建动作,居然让我们达上了所有的读操作,严重影响后续的性能啊!
所以进一步改进:
public class Singleton 

    private static final Singleton singleton; 
 
    private Singleton() 
    { 
    } 
    public static Singleton getInstance() 
    { 
        if (singleton==null) 
        { 
            synchronized (Singleton.class)  
            { 
                if (singleton== null) 
                { 
                    singleton= new Singleton(); 
                } 
            } 
        } 
        return singleton; 
    } 
}
上面只是表面的分析单例,实际上单例模式远比这复杂多,还有各种情况,比如类加载器啊,等等。 
分享到:
评论

相关推荐

    Java常用设计模式(SingleTon、FactoryMethod、AbstractFactory)

    这里我们将深入探讨三种常见的Java设计模式:单例(Singleton)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)。 **单例模式(Singleton)** 单例模式确保一个类只有一个实例,并提供一个全局访问点...

    singleton设计模式java实现及对比

    Singleton设计模式是软件工程中最常用的设计模式之一,它的主要目的是确保一个类只有一个实例,并提供全局访问点。在Java中,Singleton模式的实现有多种方式,每种方式都有其优缺点,我们将详细探讨这些实现方法并...

    设计模式-Java语言中的应用(pdf)

    《设计模式——Java语言中的应用》是一本专为Java开发者深入理解面向对象设计而编写的经典书籍。设计模式是软件工程领域中经过实践验证的、解决常见问题的有效方案,它们代表了在特定上下文中,针对特定问题的最优...

    CBF4LIFE的《设计模式讲解JAVA》

    在《设计模式讲解JAVA》一书中,作者CBF4LIFE以《三国演义》中刘备娶亲的典故为背景,通过生动的故事和代码示例,深入浅出地讲解了各种设计模式的概念、应用和实现。下面将详细探讨书中的关键知识点。 首先,书中...

    JAVA设计模式chm文档

    设计模式之Singleton(单态) 结构模式: 设计模式之Facade(外观) 设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计模式之Decorator(油漆工) 设计模式之Bridge 设计模式之Flyweight(享...

    Java的Singleton模式代码(免资源分)

    Singleton模式是一种常用的设计模式,在Java中主要用于确保一个类只有一个实例,并提供一个全局访问点。这种模式对于管理共享资源(如数据库连接池、线程池等)非常有用,因为它能够有效地控制资源的创建和访问。 ...

    singleton_单例模式_java_设计模式_

    单例模式是软件设计模式中的一种经典模式,它在Java编程中被广泛使用。这个模式的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这样做的好处在于控制资源的共享,减少系统开销,以及在多线程环境中避免...

    java Singleton单例模式

    Java中的Singleton(单例模式)是一种常用的软件设计模式,它保证了类只有一个实例,并提供一个全局访问点。这种模式在需要频繁创建和销毁对象的场景中特别有用,因为它可以节省系统资源,例如数据库连接或者线程池...

    java设计模式&java程序设计

    ### Java设计模式与Java程序设计知识点详解 #### 一、设计模式的概念与构成要素 设计模式是一种被广泛接受的解决方案,用于解决软件设计中的常见问题。这种解决方案已经被反复验证为有效的,因此在软件开发过程中...

    23种java设计模式.pdf

    " JAVA 设计模式概述" JAVA 设计模式是指在软件设计过程中,为了提高代码的可维护性、灵活性和可扩展性所使用的一些惯用解决方案。JAVA 设计模式可以分为三种:创建模式、结构模式和行为模式。 1. 创建模式 创建...

    设计模式课程设计---使用5个以上不同的设计模式完成(java)

    在本设计模式课程设计中,我们重点探讨了五个核心的设计模式:原型模式、单例模式、抽象工厂模式、代理模式和建造者模式。这些模式在Java编程中具有广泛的应用,能够帮助开发者创建更加灵活、可扩展和易于维护的代码...

    java模式,设计模式,多种设计模式

    ### Java设计模式详解 #### 一、引言 自从J2EE(Java 2 Enterprise Edition)的出现,Java的企业级应用程序开发得到了极大的简化。然而,随着J2EE在各行各业中的广泛应用,开发人员逐渐意识到需要一种更为系统化的...

    JAVA21种设计模式

    **Java的21种设计模式概述** 在软件开发中,设计模式是一种被广泛接受的解决方案,用于解决常见的设计问题。这些模式是经验丰富的开发者在实践中总结出来的,它们为复杂问题提供了一种标准化的方法。Java的21种设计...

    23种设计模式的java源代码

    里面包含了23中设计模式源代码,其中包括工厂模式(Factory)、单例(Singleton)、观察者模式(Observer)、适配器模式(Adapter)、Template模式、Decorate模式、proxy模式等 这些代码对于初学者看起来稍微复杂一些,我...

    Java 单例模式Singleton

    简单的单例模式举例Singleton 分为恶汉式 懒汉式

    设计模式之Singleton

    **设计模式之Singleton(单例模式)** 在软件工程中,设计模式是解决常见问题的模板,它们代表了经过时间考验的最佳实践。Singleton模式是一种创建型设计模式,它保证一个类只有一个实例,并提供一个全局访问点来...

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    Java设计模式是软件工程中的一种最佳实践,它总结了在特定场景下解决常见问题的经验,为程序员提供了可重用的解决方案。本资料“《java设计模式》课后习题模拟试题解答——刘伟.zip”主要涵盖了Java设计模式的学习与...

    java设计模式(疯狂java联盟版)

    Java设计模式是软件工程中的一种重要思想,它总结了在解决特定问题时,程序员们反复使用的最佳实践。...设计模式的熟练掌握也是成为高级Java开发者的必备条件之一,对于个人职业发展有着显著的推动作用。

    《Java设计模式》课后答案-刘伟.rar

    创建型设计模式如单例(Singleton)、工厂方法(Factory Method)、抽象工厂(Abstract Factory)、建造者(Builder)和原型(Prototype),它们主要关注对象的创建过程,使得代码更加灵活且易于扩展。 结构型设计...

Global site tag (gtag.js) - Google Analytics