`
gong1208
  • 浏览: 558926 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

设计模式(三)——单例模式

阅读更多

设计模式(三)——单例模式

 

本文讲述单例模式

单例模式很简单,就是将默认的构造函数私有化,这样在外部就无法直接创建该类的实例,而实例的创建都放在该类中,并且只有一份,这里不假设具体的场景了,直接看代码就好:

 

public class SingletonPattern {
	private static SingletonPattern singletonPattern= null;
	//限制住不能直接产生一个实例
	private SingletonPattern(){

	}

	public SingletonPattern getInstance(){

		if(this.singletonPattern == null){ //如果还没有实例,则创建一个
			this.singletonPattern = new SingletonPattern();
		}
	return this.singletonPattern;
	}
}

 

 一般来说通用的单例模式就如上所述,但是我们会发现这样写在某些情况下会有问题,假如现在有两个线程A 和线程B,线程A 执行到 this.singletonPattern =new SingletonPattern(),正在申请内存分配,可能需要0.001 微秒,就在这0.001 微秒之内,线程B 执行到if(this.singletonPattern == null),你说这个时候这个判断条件是true 还是false?是true,那然后线程B 也往下走,于是乎就在内存中就有两个SingletonPattern 的实例了,这样就会导致问题。那我们修改如下:

public class SingletonPattern2 {
	private static final SingletonPattern2 singletonPattern= new
			SingletonPattern2();
			//限制住不能直接产生一个实例
			private SingletonPattern2(){

			}
			public synchronized static SingletonPattern2 getInstance(){
				return singletonPattern;
			}
}
 这样问题就引刃而解了,当然,要解决上述问题,写法不一定只有这一种,至少我感觉这是可行的。要说的实际应用,最常用的就是数据库的连接池了,有空可以看下c3p0连接池的写法,这里我就不多说了。

 

分享到:
评论

相关推荐

    设计模式——单例模式

    **设计模式——单例模式** 在软件工程中,设计模式是一种在特定场景下解决常见问题的标准方案,可以被复用并提升代码质量。单例模式是设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。这种模式...

    设计模式实现——单例模式

    单例模式是软件设计模式中的一种,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下都非常有用,比如控制共享资源、管理系统级别的服务或者简化对象间的交互。单例模式的核心在于...

    java设计模式之——单例模式

    单例模式是软件设计模式中的一种经典模式,其主要目的是控制类的实例化过程,确保在任何情况下,一个类只有一个实例存在。这种模式通常用于管理共享资源或者全局配置,例如数据库连接池、线程池、日志服务等。在Java...

    设计模式——单例

    设计模式是软件工程中的一种最佳实践,用于解决在不同场景下重复出现的问题。...通过阅读提供的"iOS 设计模式——单例"相关资料,可以深入理解在iOS开发环境中如何有效利用单例模式来优化代码结构和提高程序性能。

    设计模式——单例模式(懒汉模式)

    单例模式是软件设计模式中的一种经典模式,它保证了类在任何情况下都只有一个实例存在。这个模式在很多场景下非常有用,例如控制全局资源、管理配置信息等。本文将详细探讨单例模式的懒汉式实现,并结合源码进行解析...

    C#设计模式(1)——单例模式.pdf

    本次将聚焦于一种较为简单的模式——单例模式。 #### 单例模式概述 单例模式是一种创建型模式,它的核心在于确保某个类只有一个实例,并提供一个全局可访问的访问点。这种模式非常实用,尤其是在需要频繁地创建和...

    设计模式——单例实现

    单例的5中实现及反射和反序列化破解单例。

    设计模式之PHP项目应用——单例模式设计Memcache和Redis操作类源码

    1)程序功能:单例模式设计Memcache和Redis操作类,采用PHP编写。 2)程序详解地址:http://blog.csdn.net/clevercode/article/details/46410055。 3)原创作品,出自"CleverCode的博客",分类为《设计模式之PHP项目...

    C++设计模式——单例模式-附件资源

    C++设计模式——单例模式-附件资源

    android开发设计模式之——单例模式详解

    单例模式是设计模式中最常见也最简单的一种设计模式,保证了在程序中只有一个实例存在并且能全局的访问到。比如在Android实际APP 开发中用到的 账号信息对象管理, 数据库对象(SQLiteOpenHelper)等都会用到单例...

    IOS应用源码——单例模式.zip

    单例模式是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。在iOS应用开发中,单例模式被广泛用于管理共享资源、实现全局设置、提供网络请求管理器等场景。让我们深入探讨一下单例模式在iOS...

    java设计模式——单例模式

    【Java设计模式——单例模式】 单例模式是一种常见的软件设计模式,它的核心思想是确保在应用程序的整个生命周期中,某个类只有一个实例存在。这种模式主要用于控制类的实例化过程,减少系统资源的消耗,提高系统...

    设计模式——策略模式 & 单例模式

    策略模式和单例模式是软件设计中两种非常重要的设计模式,它们在实际开发中有着广泛的应用。在这篇文章中,我们将深入探讨这两种模式的核心概念、实现方式以及如何在实际项目中运用。 策略模式是一种行为设计模式,...

    设计模式(一)——单例模式

    我们经常遇到这样的场景,线程A和线程B对同一个对象执行操作,但是在A里面new了后,B里面不便取,使的A,B对象是同一个对象,我们就会使用单例模式了。在Android中我们常用于数据库操作,蓝牙命令控制,以及一些工具...

    c#代码介绍23种设计模式-01单例模式(附代码)

    从单例模式的定义中我们可以看出——单例模式的使用自然是当我们的系统中某个对象只需要一个实例的情况,例如:操作系统中只能有一个任务管理器 2)剖析单例模式的实现思路 我们从单例模式的概念(确保一个类只有一...

    C++中的三大设计模式:单例模式、工厂模式与观察者模式的代码实现

    内容概要:本文档介绍了三个经典的软件设计模式——单例模式(Singleton Pattern)、工厂模式(Factory Pattern)以及观察者模式(Observer Pattern)的具体实现,并给出了带有详细注释的C++代码范例。对每个设计模式都有...

Global site tag (gtag.js) - Google Analytics