`
zhb8015
  • 浏览: 398287 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Group-logo
Spring Roo杂谈
浏览量:0
社区版块
存档分类
最新评论

Sigleton java应用

 
阅读更多

[精华] Singleton 模式 在 Java 中的应用


http://www.chinaunix.net 作者:cinc发表于:2002-09-10 12:49:44
发表评论】 【查看原文】 【Java讨论区】【关闭

[这个贴子最后由cinc在2002/09/0504:07pm编辑]

Singleton模式在Java中的应用
作者cinc2002-09-04

程序中经常有这样的要求,整个程序运行时只有一个实例被使用。
比如:数据库连接池,系统参数配置,JavaAPI中的Runtime,Calendar...
如何实现这种需求成为一个值得讨论的问题。

以往的做法,是在程序的某个类里面(比如是GlobalObject)建立一个这个此种类的实例,然后规定
所有需要用到此类的,都从GlobalObject那里获得,看下面的例子:

publicclassConnectionPoolManager{
publicConnectionPoolManager{
//dosomeinitializework
}
publicConnectiongetConnection(){
....
}
}

publicclassGlobalObject{
privateConnectionPoolManagerconnectionPoolManager&#59;
publicGlobalObject(){
connectionPoolManager=newConnectionPoolManager()&#59;
...
}
publicvoidgetConnectionPoolManager(){
returnconnectionPoolManager&#59;
}
}

publicclassQueryFunctions{
publicstaticCollectionfindStudentByName(Stringname){
ConnectionPoolManager=globalObject.getConnectionPoolManager()&#59;
Connectionconnection=connectionPoolManager.getConnection()&#59;
//querydatabase
}
}

但这样做有如下缺点:
其他人可能调用ConnectionPoolManager的构造函数自己建立一个数据库连接池,导致
程序中存在多个ConnectionPoolManager,人为的规定往往得不到好的实施。
GlobalObject其实就是一个C语言中的全局变量,与面向对象的方法相冲突。



因此,可以使用设计模式中的Singleton(单件)模式来完成以上的需求:
JavaAPI中的Runtime等等用的就是这种方法。
代码如下:

publicclassConnectionPoolManager{
privatestaticinstance=null&#59;
privateConnectionPoolManager(){
//dosomeinitializework
}
publicstaticsyncronizedvoidgetInstance(){
if(instance==null){
instance=newConnectionPoolManager()&#59;
}
returninstance&#59;
}
publicConnectiongetConnection(){
}
}

ConnectionPoolManager的使用

publicclassQueryFunctions{
publicstaticCollectionfindStudentByName(Stringname){
ConnectPoolManagerconnectionPoolManager=ConnectionPoolManager.getInstance()&#59;
Connectionconn=connectionPoolManager.getConnection()&#59;
//querydatabase
}
}

1.instance是私有的,开始时赋值为null,外部只有通过getInstance方法才能获得他。
2.构造方法是私有的,这点很重要,保证只有这个类自己才能够调用,其他的类无法调用此构造函数。
3.getInstance方法中:
if语句,保证只有一个instance存在
唯一的一个ConnectionPoolManager在第一次调用的时候被建立。


Java语言在设计的时候就使用了很多设计模式的思想,像Collection中的Iterator模式,
Event中的Observer模式,Applet中的Templete模式,对象创建时的Factory模式,这些
模式大多可以从Java的类的命名中体现出来,希望大家在学习Java时多注意对设计模式的学习。

参考:
设计模式:可复用面向对象软件的基础(GangofFour的DesignPattern经典)
ThinkinginPattern:http://www.mindview.net/Books/TIPatterns/还是BruceEckel写的。
DesignPatternJava:ftp://cinc.dns2go.com/pub/doc/pattern/java/
分享到:
评论

相关推荐

    singleton设计模式java实现及对比

    **Singleton设计模式** Singleton设计模式是软件工程中最...综上所述,Singleton模式的实现方式各有优劣,选择哪种方式取决于具体的应用场景和性能需求。在实际开发中,应根据项目需求选择最适合的Singleton实现方式。

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

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

    Singleton在Java中的应用.doc

    `Runtime`类提供了一个系统运行时环境的接口,每个Java应用程序都有一个`Runtime`实例,代表了与Java虚拟机的交互。`Runtime`类的实现如下: ```java public class Runtime { private static Runtime ...

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

    ### Java的Singleton模式详解 #### 一、Singleton模式概述 Singleton模式是一种常用的设计模式,在Java中主要用于确保一个类只有一个实例,并提供一个全局访问点。这种模式对于管理共享资源(如数据库连接池、...

    Singleton pattern单例模式应用

    ### Singleton Pattern 单例模式应用详解 #### 一、单例模式概述 单例模式(Singleton Pattern)是一种常用的软件设计模式,在系统中确保某个类只有一个实例,并提供一个全局访问点。这种模式通常用于控制资源的...

    singleton pattern

    singleton pattern 的定义 主要应用方法 优缺点 通过代码 具体分析解释

    基于Java数据库编程及其应用分析.pdf

    Java Applet是一种可以在Web浏览器中运行的小型Java应用程序,允许开发者在网页中嵌入一些动态内容。随着技术的发展,虽然Applet的使用频率有所降低,但它在早期互联网应用中扮演了重要角色。 在进行Java数据库编程...

    Java Singleton 实用教程(附源码)

    通过深入理解这些实现方式,开发者可以更好地控制和管理应用程序中的对象生命周期,提高代码质量和效率。在给定的压缩包文件中,可能包含了上述不同实现方式的源代码示例,读者可以通过导入Eclipse工程进行学习和...

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

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

    Singleton Pattern 源码

    单例模式(Singleton Pattern)是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下非常有用,比如控制资源...因此,在实际应用中,应谨慎考虑是否真的需要使用单例模式。

    M2_Singleton_单例模式_java_powder53m_arrow51c_

    单例模式是软件设计模式中的一种经典模式,用于控制类的实例化过程,确保一个类在整个应用程序中只有一个实例存在。这种模式在很多场景下都非常有用,例如管理共享资源、配置对象或者缓存服务等。本资料主要介绍了...

    单例模式Singleton

    单例模式(Singleton Pattern)是一种常用的软件设计模式,它的核心思想是确保一个类在整个应用程序中只有一个实例存在,并提供一个全局访问点来获取这个实例。这种模式在很多场景下非常有用,比如管理系统资源、...

    (创建型模式)Singleton模式

    Singleton模式的应用场景通常涉及到系统资源的共享,比如数据库连接池、日志服务、线程池等。 在Java或其他面向对象的语言中实现Singleton模式,有多种方法,但核心思想都是控制类的实例化过程。下面我们将详细介绍...

    singleton.zip

    单例模式是软件设计模式中的一种,用于控制类的实例化过程,...然而,对于特定的应用场景,其他实现方式也可能更合适。理解并掌握这些单例模式的实现方式对于Java开发者来说非常重要,有助于编写更加高效、可靠的代码。

    Java练习reflect,singleton,DomAndSax

    反射在框架开发、元数据驱动的应用、动态代理等方面有广泛应用。 2. 单例模式(Singleton) 单例模式是一种设计模式,确保一个类只有一个实例,并提供一个全局访问点。在Java中,通常通过私有构造函数和静态工厂...

    java面向对象应用程序开发

    在实际的Java应用程序开发中,理解并熟练运用这些面向对象的概念和设计模式,能够帮助我们构建可维护、可扩展的高质量软件系统。通过不断的实践和学习,开发者可以更好地掌握Java面向对象编程的精髓,提升自己的编程...

    单例模式(singleton)

    在描述中提到的随机数生成器就是一个典型的单例应用,它确保在整个应用程序运行期间,只有一个随机数生成器实例,所有客户端都通过这个实例来生成随机数。 实现单例模式的关键在于防止其他对象通过常规构造函数创建...

    Singleton(单例模式)

    在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样有几个好处: 1、某些类创建比较频繁,对于一些大型的对象,这可以节省一笔很大的系统开销。 2、省去了new操作符,降低了系统内存的使用频率...

    java单例模式实例

    单例模式是软件设计模式中的一种经典模式,用于确保一个类只有一个实例,并提供一个全局访问点。...通过学习和实践这些单例模式的实现,我们可以更好地理解和应用设计模式,提升代码的质量和可维护性。

Global site tag (gtag.js) - Google Analytics