`
dreamShow
  • 浏览: 10854 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

Java之单例模式

    博客分类:
  • Java
阅读更多
    闲来无事,特发表文章一篇,谈谈自己对singleton模式的理解
   
    public class Singleton {
      private static Singleton instance ;//静态成员变量
    private Singleton(){}//私有构造方法
    public static synchronized  Singleton getInstance() {
       if(instance==null){
        instance = new Singleton()
        }
    return instance;   
   } 
   } 
   

singleton 模式保证在Java应用程序中,一个类Class只有一个实例存在,要注意以下几点:
1.声明的类成员变量是静态的,这样可以保存不被GC(垃圾回收)回收掉。
2.私有的构造方法,防止使用new 造对象,Singleton.getInstance()调用静态方法
   来获取实例。
3.getInstance方法加上synchronized变为同步方法,保存整个应用当中始终只有一个实例。 
2
5
分享到:
评论
4 楼 Heis 2010-07-21  
Heis 写道
没看过Effective Java吧,这单例是不是线程安全的。原因是在访问getInstance方法时,还是有可能得到一个没有初始化成功的实例的引用。可以参考原书单例的那章。

最简单的单例是在编译阶段就构建实例。
public class Singleton { 
    private final static Singleton instance=new Singleton() ;//静态成员变量 
  private Singleton(){}//私有构造方法 
  public static Singleton getInstance() {  
    return instance;    
}  
}



是我看错了 ,博主的方法加了synchronized,是线程安全的,没有则不安全。

博主可以删我的贴,以免误导别人。

但是博主写得这个单例每次调用synchronized方法是有效率损失,好处是实例可以等到方法调用时才构建。而我上面写得单例调用效率高,缺点是类在加载的时候就构建实例了,不管这个实例有没有使用到。
3 楼 dreamShow 2010-07-21  
mountain_king 写道
1楼是否能具体说明一下,为何下面会获得为null的对象

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

获得对象不会是null的;
在第一次调用Singleton.getInstance()方法,才实例化对象
以后再用Singleton.getInstance()方法时直接获取已经造好的对象

2 楼 mountain_king 2010-07-21  
1楼是否能具体说明一下,为何下面会获得为null的对象

public static synchronized  Singleton getInstance() {   
       if(instance==null){   
        instance = new Singleton()   
        }   
    return instance;      
   }   
1 楼 salever 2010-07-21  
还有一种单例模型,允许用户构建多个实例对象,但是这些对象使用共享的(static)数据成员。

相关推荐

    java之单例模式

    ### Java之单例模式 #### 一、单例模式简介 单例模式是设计模式中较为常见的一种,它确保一个类只有一个实例,并提供一个全局访问点。这种模式在实际开发中有着广泛的应用场景,比如系统配置管理、日志对象、...

    Java SE程序 单例模式

    Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式...

    java单例模式实例

    在Java中,有多种实现单例模式的方法,每种都有其特点和适用场景。接下来,我们将深入探讨这些实现方式。 首先,我们来看**懒汉式(Lazy Initialization)**。这种实现方式是在类被首次请求时才创建单例对象,延迟...

    实用Java的单例模式,实用于Java学习者

    实用Java的单例模式,实用于Java学习者 单例模式 单例模式

    Java实现多种单例模式

    在Java编程中,单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供一个全局访问点。这种模式在需要频繁创建和销毁对象的场景中尤其有用,因为它可以节省系统资源并确保对象间的协调一致。以下是...

    Java实现单例模式[汇编].pdf

    总的来说,单例模式在Java中有着重要的应用,开发者可以根据实际需求选择适合的实现方式。需要注意的是,虽然单例模式可以有效地管理和控制资源,但过度使用也可能导致系统设计过于复杂,难以测试和维护。在使用单例...

    Java 单例模式 工具类

    Java中的单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供全局访问点。在Java编程中,单例模式常用于控制资源的访问,比如数据库连接池、线程池或者日志对象等。本篇文章将深入探讨如何在Java中...

    Java 单例模式.pptx

    ### Java 单例模式详解 #### 一、什么是单例模式? 单例模式是一种常用的软件设计模式,在这种模式中,一个类只能拥有一个实例,并且该类必须自行创建并提供这个实例。通常,单例模式用于确保某个类在整个应用程序...

    java-单例模式几种写法

    在Java中,实现单例模式有多种方法,每种方法都有其特点和适用场景。以下是对这六种常见单例模式实现方式的详细解释: 1. **饿汉式(静态常量)** 这是最简单的单例实现,它在类加载时就创建了实例,线程安全。 `...

    Java设计模式之单例模式

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

    java设计模式之单例模式.zip

    在Java中实现单例模式有多种方法: 1. **饿汉式(静态常量)**:在类加载时就完成了初始化,所以没有线程安全问题,但这种实现方式无法实现延迟加载。 ```java public class Singleton { private static final ...

    设计模式之单例模式(结合工厂模式)

    在Java等面向对象编程语言中,单例模式常用于管理共享资源,如数据库连接池、线程池或者配置文件等。结合工厂模式,可以进一步优化单例的创建过程,提高代码的可读性和可维护性。 单例模式的核心在于控制类的实例化...

    java:单例模式 作为对象的创建模式

    单例模式是设计模式中的一种,它在Java编程中被广泛应用,主要目的是限制类的实例化,确保在程序运行期间,对于某个特定类,只存在一个全局共享的对象。这种模式通常用于那些需要频繁实例化然后销毁,或者创建代价...

    Java 单例模式 懒汉模式

    Java 单例模式 懒汉模式 //懒汉式 多线程中不可以保证是一个对象

    设计模式单例模式和工厂模式综合应用

    **代码**文件则提供了实际的Java实现,通过查看这些代码,我们可以看到单例模式和工厂模式如何在实践中被运用,包括类的定义、方法的实现以及如何通过代码调用来创建和管理对象。 总的来说,这个项目为学习和理解...

    java 获取 配置文件 属性 单例模式 高效加载

    通过单例模式实例化获取propertyUtil 工具包实例,高效加载配置文件,java语言编写。通过单例模式实例化获取propertyUtil 工具包实例,高效加载配置文件,java语言编写。通过单例模式实例化获取propertyUtil 工具包...

    java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂

    MVC模式使得用户界面与数据逻辑分离,单例模式保证关键资源的唯一访问点,代理模式在访问对象前后增加额外的功能,工厂模式将对象创建与使用分离,简单工厂模式为对象创建提供一个简单便捷的接口。通过这些模式,...

    Java设计模式之单例模式的七种写法

    Java设计模式之单例模式的七种写法 单例模式是一种常见的设计模式,它确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机的驱动程序对象常...

    Java单例模式应用研究.pdf

    ### Java单例模式应用研究 #### 一、单例模式概述 单例模式(Singleton Pattern)作为一种最基本的创建型设计模式,其主要目的是控制一个类的实例化过程,确保在整个应用程序中仅存在一个实例,并且该实例能够被全局...

Global site tag (gtag.js) - Google Analytics