作为对象的创建模式[GOF95], 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。
注:本文乃阎宏博士的《Java与模式》一书的第十五章。
<iframe align="right" marginwidth="0" marginheight="0" src="http://www.chinabyte.com/tag/cont_flash_software.html" frameborder="0" width="360" scrolling="no" height="300"></iframe>
引言
单例模式的要点
单例单例
显然单例模式的要点有三个;一是某各类只能有一个实例;二是它必须自行创建这个事例;三是它必须自行向整个系统提供这个实例。在下面的对象图中,有一个 "单例对象",而"客户甲"、"客户乙" 和"客户丙"是单例对象的三个客户对象。可以看到,所有的客户对象共享一个单例对象。而且从单例对象到自身的连接线可以看出,单例对象持有对自己的引用。
资源管理
一些资源管理器常常设计成单例模式。
在计算机系统中,需要管理的资源包括软件外部资源,譬如每台计算机可以有若干个打印机,但只能有一个Printer Spooler, 以避免两个打印作业同时输出到打印机中。每台计算机可以有若干传真卡,但是只应该有一个软件负责管理传真卡,以避免出现两份传真作业同时传到传真卡中的情 况。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用。
需要管理的资源包括软件内部资源,譬如,大多数的软件都有一个(甚至多个)属性(properties)文件存放系统配置。这样的系统应当由一个对象来管理一个属性文件。
需要管理的软件内部资源也包括譬如负责记录网站来访人数的部件,记录软件系统内部事件、出错信息的部件,或是对系统的表现进行检查的部件等。这些部件都必须集中管理,不可政出多头。
这些资源管理器构件必须只有一个实例,这是其一;它们必须自行初始化,这是其二;允许整个系统访问自己这是其三。因此,它们都满足单例模式的条件,是单例模式的应用。
一个例子:Windows 回收站
Windows 9x 以后的视窗系统中都有一个回收站,下图就显示了Windows 2000 的回收站。
在整个视窗系统中,回收站只能有一个实例,整个系统都使用这个惟一的实例,而且回收站自行提供自己的实例。因此,回收站是单例模式的应用。
双重检查成例
在本章最后的附录里研究了双重检查成例。双重检查成例与单例模式并无直接的关系,但是由于很多C 语言设计师在单例模式里面使用双重检查成例,所以这一做法也被很多Java 设计师所模仿。因此,本书在附录里提醒读者,双重检查成例在Java 语言里并不能成立
分享到:
相关推荐
单例模式 - **定义**:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 - **目的**:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 - **适用场景**:当系统中某个类只允许出现一...
- **单例模式**(Singleton Pattern):确保一个类只有一个实例,并提供一个全局访问点。 ##### 5.2 结构型模式 结构型模式关注如何将类和对象组合起来以形成更复杂的结构。它可以进一步分为类模式和对象模式。 -...
- **单例模式**:确保一个类仅有一个实例,并提供一个全局访问点。单例模式常用于控制对资源的访问,例如配置管理器、线程池等。 ##### 2.2 结构型模式 - **外观模式**:为子系统中的一组接口提供一个一致的界面,...
**(4)单例模式(Singleton)** - **定义**:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 - **应用场景**:当希望在整个应用程序中只允许存在一个实例时。 - **JAVA实现**:通过私有构造函数和静态...
1. **单例模式(Singleton)**:确保一个类只有一个实例,并提供一个全局访问点。这是为了控制资源的访问,例如数据库连接或日志对象。 2. **工厂方法模式(Factory Method)**:定义了一个创建对象的接口,但允许...
单例模式作为23种经典设计模式之一,确保了某个类只有一个实例,并提供了一个全局访问点。然而,在实际应用中,人们往往会关心这样一个问题:当单例对象长时间未被使用时,它是否会被Java虚拟机(JVM)的垃圾回收机制...
多例模式是单例模式的一种变体,允许根据不同的参数返回不同的实例。这通常用于需要根据某种条件创建不同实例的情况。 #### 六、工厂方法模式(Factory Method Pattern) 工厂方法模式提供了一个创建对象的接口,但...
对于Java开发者而言,熟悉并掌握各种设计模式是非常重要的,其中单态设计模式(通常称为单例模式)是一种非常实用的设计模式,它确保一个类只有一个实例,并提供一个全局访问点。 #### 二、单态设计模式的含义及...
- **创建型模式**:当需要控制对象的创建过程时,比如单例模式可以确保整个系统中只有一个实例存在,工厂模式则可以帮助我们根据不同的条件创建不同的对象实例。 - **结构型模式**:在需要调整类和对象的结构时,...
那就先看设计模式引言 ! 学习 GoF 设计模式的重要性 建筑和软件中模式之异同 A. 创建模式 设计模式之 Singleton(单态/单件) 阎宏博士讲解:单例(Singleton)模式 保证一个类只有一个实例,并提供一个访问它的...
例如,在Web开发中,使用MVC(模型-视图-控制器)架构时,通常会涉及到多种设计模式的组合使用,如观察者模式用于事件处理、单例模式用于管理全局资源等。 #### 四、设计模式的学习建议 对于初学者来说,可以从...
##### 1.4 单例模式 - **定义**:确保一个类仅有一个实例,并提供一个访问它的全局访问点。 - **适用场景**: - 当类只能有一个实例而且客户端可以从一个众所周知的访问点访问它时。 - 当这个唯一实例应该是通过...
6. **单例模式** (Singleton Pattern) #### 1. 简单工厂模式 (Simple Factory Pattern) 简单工厂模式并不是Gang of Four (GoF) 23种经典设计模式之一,但它是一种非常实用的设计模式。简单工厂模式的核心是定义一个...
单例模式确保一个类只有一个实例,并提供一个全局访问点。这种模式在控制资源访问、配置管理或日志记录等方面非常有用。 3. **建造者模式(Builder)** 当对象的构建过程复杂且独立于组成它的部件时,使用建造者...