[这个贴子最后由cinc在2002/09/0504:07pm编辑]
Singleton模式在Java中的应用 作者cinc2002-09-04
程序中经常有这样的要求,整个程序运行时只有一个实例被使用。 比如:数据库连接池,系统参数配置,JavaAPI中的Runtime,Calendar... 如何实现这种需求成为一个值得讨论的问题。
以往的做法,是在程序的某个类里面(比如是GlobalObject)建立一个这个此种类的实例,然后规定 所有需要用到此类的,都从GlobalObject那里获得,看下面的例子:
publicclassConnectionPoolManager{ publicConnectionPoolManager{ //dosomeinitializework } publicConnectiongetConnection(){ .... } }
publicclassGlobalObject{ privateConnectionPoolManagerconnectionPoolManager; publicGlobalObject(){ connectionPoolManager=newConnectionPoolManager(); ... } publicvoidgetConnectionPoolManager(){ returnconnectionPoolManager; } }
publicclassQueryFunctions{ publicstaticCollectionfindStudentByName(Stringname){ ConnectionPoolManager=globalObject.getConnectionPoolManager(); Connectionconnection=connectionPoolManager.getConnection(); //querydatabase } }
但这样做有如下缺点: 其他人可能调用ConnectionPoolManager的构造函数自己建立一个数据库连接池,导致 程序中存在多个ConnectionPoolManager,人为的规定往往得不到好的实施。 GlobalObject其实就是一个C语言中的全局变量,与面向对象的方法相冲突。
因此,可以使用设计模式中的Singleton(单件)模式来完成以上的需求: JavaAPI中的Runtime等等用的就是这种方法。 代码如下:
publicclassConnectionPoolManager{ privatestaticinstance=null; privateConnectionPoolManager(){ //dosomeinitializework } publicstaticsyncronizedvoidgetInstance(){ if(instance==null){ instance=newConnectionPoolManager(); } returninstance; } publicConnectiongetConnection(){ } }
ConnectionPoolManager的使用
publicclassQueryFunctions{ publicstaticCollectionfindStudentByName(Stringname){ ConnectPoolManagerconnectionPoolManager=ConnectionPoolManager.getInstance(); Connectionconn=connectionPoolManager.getConnection(); //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设计模式** Singleton设计模式是软件工程中最...综上所述,Singleton模式的实现方式各有优劣,选择哪种方式取决于具体的应用场景和性能需求。在实际开发中,应根据项目需求选择最适合的Singleton实现方式。
这里我们将深入探讨三种常见的Java设计模式:单例(Singleton)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)。 **单例模式(Singleton)** 单例模式确保一个类只有一个实例,并提供一个全局访问点...
`Runtime`类提供了一个系统运行时环境的接口,每个Java应用程序都有一个`Runtime`实例,代表了与Java虚拟机的交互。`Runtime`类的实现如下: ```java public class Runtime { private static Runtime ...
### Java的Singleton模式详解 #### 一、Singleton模式概述 Singleton模式是一种常用的设计模式,在Java中主要用于确保一个类只有一个实例,并提供一个全局访问点。这种模式对于管理共享资源(如数据库连接池、...
### Singleton Pattern 单例模式应用详解 #### 一、单例模式概述 单例模式(Singleton Pattern)是一种常用的软件设计模式,在系统中确保某个类只有一个实例,并提供一个全局访问点。这种模式通常用于控制资源的...
singleton pattern 的定义 主要应用方法 优缺点 通过代码 具体分析解释
Java Applet是一种可以在Web浏览器中运行的小型Java应用程序,允许开发者在网页中嵌入一些动态内容。随着技术的发展,虽然Applet的使用频率有所降低,但它在早期互联网应用中扮演了重要角色。 在进行Java数据库编程...
通过深入理解这些实现方式,开发者可以更好地控制和管理应用程序中的对象生命周期,提高代码质量和效率。在给定的压缩包文件中,可能包含了上述不同实现方式的源代码示例,读者可以通过导入Eclipse工程进行学习和...
《设计模式——Java语言中的应用》是一本专为Java开发者深入理解面向对象设计而编写的经典书籍。设计模式是软件工程领域中经过实践验证的、解决常见问题的有效方案,它们代表了在特定上下文中,针对特定问题的最优...
单例模式(Singleton Pattern)是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下非常有用,比如控制资源...因此,在实际应用中,应谨慎考虑是否真的需要使用单例模式。
单例模式是软件设计模式中的一种经典模式,用于控制类的实例化过程,确保一个类在整个应用程序中只有一个实例存在。这种模式在很多场景下都非常有用,例如管理共享资源、配置对象或者缓存服务等。本资料主要介绍了...
单例模式(Singleton Pattern)是一种常用的软件设计模式,它的核心思想是确保一个类在整个应用程序中只有一个实例存在,并提供一个全局访问点来获取这个实例。这种模式在很多场景下非常有用,比如管理系统资源、...
Singleton模式的应用场景通常涉及到系统资源的共享,比如数据库连接池、日志服务、线程池等。 在Java或其他面向对象的语言中实现Singleton模式,有多种方法,但核心思想都是控制类的实例化过程。下面我们将详细介绍...
单例模式是软件设计模式中的一种,用于控制类的实例化过程,...然而,对于特定的应用场景,其他实现方式也可能更合适。理解并掌握这些单例模式的实现方式对于Java开发者来说非常重要,有助于编写更加高效、可靠的代码。
反射在框架开发、元数据驱动的应用、动态代理等方面有广泛应用。 2. 单例模式(Singleton) 单例模式是一种设计模式,确保一个类只有一个实例,并提供一个全局访问点。在Java中,通常通过私有构造函数和静态工厂...
在实际的Java应用程序开发中,理解并熟练运用这些面向对象的概念和设计模式,能够帮助我们构建可维护、可扩展的高质量软件系统。通过不断的实践和学习,开发者可以更好地掌握Java面向对象编程的精髓,提升自己的编程...
在描述中提到的随机数生成器就是一个典型的单例应用,它确保在整个应用程序运行期间,只有一个随机数生成器实例,所有客户端都通过这个实例来生成随机数。 实现单例模式的关键在于防止其他对象通过常规构造函数创建...
在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样有几个好处: 1、某些类创建比较频繁,对于一些大型的对象,这可以节省一笔很大的系统开销。 2、省去了new操作符,降低了系统内存的使用频率...
单例模式是软件设计模式中的一种经典模式,用于确保一个类只有一个实例,并提供一个全局访问点。...通过学习和实践这些单例模式的实现,我们可以更好地理解和应用设计模式,提升代码的质量和可维护性。