`

单例模式(单件模式)

阅读更多
单件模式,就是确保一个类只有一个实例,并提供一个全局访问点。

单例的作用是独一无二,比方说,如果有一个注册表设置的对象,你不希望这样的对象有多个拷贝吧,那会把设置搞得一团乱,利用像单例这样的单件对象,可以确保程序中使用的全局资源只有一份。
单件常常被用来管理共享资源,例如数据库连接或者线程池。
/**
 * @author zhq426
 *
 */
public class Singleton {
	//利用一个静态变量来记录singleton 类的唯一实例
	private static Singleton uniqueInstance;
	
	/**
	 * 把构造器的声明为私有的,只有自singeton类内才可以构造器。
	 */
	private Singleton(){
		
	}
	
	/**
	 * 用getInstance()方法实例化对象,并返回这个实例。
	 * @return
	 */
	public static Singleton getInstance(){
		if(uniqueInstance==null){
			uniqueInstance=new Singleton();
		}
		return uniqueInstance;
	}
	
	public void test(){
		System.out.println("test singleton");
	}
	
	//other methods singleton 是一个正常的类,
        //具有一些其他用途的实例变量和方法。 

}

uniqueInstance 拥有“ 一个”实例,别忘记了,它是一个静态变量,如果uniqueInstance是空的,表示还没有创建实例,而如果不存在,我们就利用私有构造函数产生一个实例并把它赋值到静态变量中,请注意,如果我们不需要这个变量,它就永远不会产生。这就是“延迟”实例化。

以上说的是在单钱程时是不会产生多个实例的,如果在多线程呢???

1. 只要把getInstance()变成同步(synchronized)方法,多线程灾难就可以轻易的解决了,
2. 使用多线程,使效率降低了,可以使用急切创建实例的,而不用延迟实例化的做法。改方法变成
 private static Singleton uniqueInstance=new Singleton();

3. 或者使用“双重检查加锁”,在getInstance()中减少使用同步。
if(uniqueInstance==null){
			synchronized(Singleton.class){
				if(uniqueInstance==null){
					uniqueInstance=new Singleton();
				}
			}
		}

分享到:
评论

相关推荐

    深入浅出设计模式之单件模式

    ### 深入浅出设计模式之单件模式 #### 一、单件模式概述 单件模式(Singleton Pattern)是软件设计模式中最为常见的一种,它的主要目标是确保某个类只有一个实例,并提供一个全局访问点。单件模式在很多情况下都...

    C#单例模式视频讲解

    《C#面向对象设计模式纵横谈(2):Singleton 单件(创建型模式)》这个视频教程很可能深入浅出地介绍了单例模式的概念、实现方式以及在实际项目中的应用案例,对于学习和掌握单例模式是很好的参考资料。通过观看和实践...

    c#单例模式(Singleton)的6种实现

    单件模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点。 1.1.2 正文 图1单例模式(Singleton)结构图 单例模式(Singleton)是几个创建模式中最对立的一个,它的主要特点不是根据用户程序...

    c#工厂模式——简单工厂,抽象工厂,单件模式实例

    C#中的工厂模式分为简单工厂、抽象工厂和单例模式三种,每一种都有其特定的应用场景和优势。 1. **简单工厂模式**: 简单工厂模式是一种静态工厂方法,它创建一个具体的对象而无需暴露创建逻辑。在C#中,我们可以...

    C++ 单例模式的详解及实例

    单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,...

    设计模式之单件模式

    单例模式是软件设计模式中的一种经典模式,它在许多场景下被广泛使用,尤其是在需要全局唯一实例的情况下。本文将详细解析单例模式的概念、作用、实现方式以及其在实际编程中的应用。 单例模式的核心思想是确保一个...

    基于C#的设计模式中的单件模式

    单件模式(Singleton Pattern)是软件设计模式中的一种基础模式,它确保一个类只有一个实例,并提供一个全局访问点。在C#中,单例模式的实现有多种方式,包括懒汉式、饿汉式以及线程安全的实现。下面我们将详细讨论...

    设计模式_--_工厂模式和单件模式

    ### 设计模式——工厂模式与单例模式 #### 一、引言 设计模式是软件工程领域中的一个重要概念,它代表了在特定情况下解决常见问题的最佳实践。在本篇文章中,我们将深入探讨两种广泛使用的软件设计模式:工厂模式...

    PHP设计模式之单例模式定义与用法分析

    单例模式(Singleton Pattern 单件模式或单元素模式),是常见的一种设计模式,它有三个特点 1.只能有一个实例 2.必须自行创建这个实例 3.必须给其他对象提供这一实例 下面用PHP代码实现一下 <?PHP /** *...

    C#设计模式,单件模式,C#代码

    C#作为.NET框架的主要编程语言,广泛应用于各种复杂系统开发,其中单件模式(Singleton Pattern)是C#开发者经常会遇到的一种设计模式。本资源旨在帮助初学者理解并应用单件模式,通过关键代码实例,让你快速掌握这...

    设计模式 之 单件模式

    单件模式(Singleton Pattern)是设计模式中的一种,它的核心意图是确保一个类只有一个实例,并提供一个全局访问点。在软件工程中,这样的设计模式能够有效地控制资源的使用,限制实例的数量,以及协调对象间的交互...

    数据库连接-单件模式

    尽管文件列表中提到了`MySQL`,但在“数据库连接-单件模式”的主题下,我们通常讨论的是如何在SQL Server环境下应用单例模式。不过,单例模式的概念和实现方式在MySQL或其他数据库系统中也是类似的,只是具体的...

    设计模式\单件模式VS2005

    单件模式(Singleton Pattern)是软件设计模式中的一种经典模式,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下非常有用,比如配置管理、线程池、数据库连接等需要全局唯一的...

    [创建型模式] head first 设计模式之单件模式(Singleton)

    **单例模式(Singleton)**是软件设计模式中的一种创建型模式,它的核心思想是确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下非常有用,例如管理共享资源、配置对象或者数据库连接等。单例...

    C#单件模式例子 内含C#编写源代码

    单件模式(Singleton Pattern)是设计模式中的一种结构型模式,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。在C#编程中,单例模式被广泛应用于那些需要频繁创建和销毁的对象,比如线程池、数据库...

    python单例模式的多种实现方法

    前言 单例模式(Singleton Pattern),是一种软件设计模式,是类只能实例化一个对象, ...简单说,单例模式(也叫单件模式)的作用就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个

    as3 设计模式 单件模式 源码

    单例模式是软件设计模式中的一种经典模式,它在AS3(ActionScript 3)编程环境中同样适用。这种模式的主要目的是确保一个类只有一个实例,并提供一个全局访问点来获取这个唯一的实例。在AS3中,单例模式常用于管理...

    C++设计模式课件12_Singleton_单件模式.pdf

    ### 单件模式(Singleton Pattern)详解 #### 概述 单件模式是软件设计模式中最为基础且应用广泛的一种模式。它确保一个类只有一个实例,并提供一个全局访问点来获取该实例。此模式通常用于那些需要频繁创建、消耗...

    详解Ruby设计模式编程中对单例模式的运用

     单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有...

Global site tag (gtag.js) - Google Analytics