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

设计模式:单例模式singleton示例分析

    博客分类:
  • Java
 
阅读更多
public class singleton {
	private singleton(){
		System.out.println("构造方法被调用!");
	}
	private  static class  singletonHolder{
		private static singleton instance = new singleton();
	}
	public static singleton getInstance(){
		return singletonHolder.instance;
	}
	public static void main(String[] args) {
		new Thread(new ThreadTest()).start();
	}
	static  class ThreadTest implements Runnable{
		@Override
		public  void run() {
			long beginTime = System.currentTimeMillis();
			for(int i=0;i<100000;i++){
				singleton.getInstance();
			}
			System.out.println("花费时间为:"+(System.currentTimeMillis()-beginTime));
		}
	}
  

	
}

 以上为单例模式的比较经典的实现,使用内部类的实现方式即可以做到延迟加载,也不必使用同步关键字,是一个比较完善的实现。

我以前可能没有注意优化过,一般实现时为了延迟加载我们会使用同步关键字,但是大大降低了性能,经过测试,使用synchronized跟不使用时时间上差两个数量级,但以上这种实现可以性能比较好,当然,以上实现还是不能完全保证只生成一个单例,比如使用反射机制,强行调用私有构造方法,还是能生成多个实例,现不讨论这种极端方式,但还是一些合法的方法,可以导致生成多个单例类的实例。

在进行序列化跟反序列化时可能会导致生成多个实例,如果有这种情况,就要注意,可以避免!

分享到:
评论

相关推荐

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

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

    设计模式总结-模板设计模式,单例模式(singleTon)

    ### 设计模式总结:模板设计模式与单例模式 #### 模板设计模式 模板设计模式是一种行为型设计模式,它定义了一个算法的骨架,并允许子类为算法的某些步骤提供具体的实现。通过这种方式,算法的基本流程保持不变,...

    JS 设计模式之:单例模式定义与实现方法浅析

    单例模式(Singleton)属于创建型的设计模式,它限制我们只能创建单一对象或者某个类的单一实例。 通常情况下,使用该模式是为了控制整个应用程序的状态。在日常的开发中,我们遇到的单例模式可能有:Vuex 中的 ...

    单例和策略模式示例

    今天我们将深入探讨两种常用的设计模式:单例模式和策略模式。这两种模式在实际开发中有着广泛的应用,它们分别解决了不同的问题,提高了代码的可维护性和可扩展性。 首先,我们来看单例模式。单例模式是一种保证一...

    java设计模式之单例模式详解

    单例模式(Singleton Pattern)是面向对象设计模式中的一种,属于创建型模式。它确保一个类仅有一个实例,并提供一个全局访问点来访问该实例。单例模式的核心在于控制类的实例化过程,保证在任何情况下都只会创建一...

    JAVA中常用的设计模式:单例模式,工厂模式,观察者模式

    【设计模式概述】 ...总的来说,单例模式、工厂模式和观察者模式都是Java中非常实用的设计模式,它们在实际开发中有着广泛的应用。理解并熟练掌握这些模式,可以帮助开发者编写出更加高效、可维护的代码。

    Design-Patterns-Singleton:单例设计模式示例

    这是单例设计模式的基本示例。 您将在此仓库中找到两个示例。 首先是线程安全的单例,其次不是。 测试的输出是: synchronizedTest Started... Thread 2 instance is : ...

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

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

    java设计模式,单例模式学习示例源码,创建单例,配置文件读取

    单例模式是23种经典设计模式之一,它确保一个类只有一个实例,并提供一个全局访问点。这个模式在很多场景下非常有用,比如控制资源的共享,如数据库连接池,或者创建昂贵的对象时避免频繁实例化。 单例模式的基本...

    设计模式之单例模式

    单例模式(Singleton Pattern)是软件设计模式中的一个重要组成部分,属于创建型模式之一。它保证一个类仅有一个实例,并提供一个全局访问点。单例模式的核心在于确保某个类只有一个实例存在,并且这个实例能够被...

    《设计模式:可复用面向对象软件的基础》学习并理解 23 种设计模式

    ### 设计模式基础及其重要性 #### 设计模式概述 设计模式是一种被广泛采用的、经过验证的解决方案,用于解决软件开发过程中常见的设计问题。它不仅帮助开发者编写可复用的代码,还促进了团队成员之间的有效沟通。...

    设计模式入门之一:深入单例模式

    单例模式是设计模式中最基础且常用的一种,它旨在确保一个类只有一个实例,并提供一个全局访问点。在软件开发中,有些对象只需要一个实例就能满足需求,比如线程池、数据库连接、配置管理等。使用单例模式可以避免...

    设计模式-单例设计模式

    ### 设计模式—单例设计模式详解 #### 定义 单例模式是一种常见的创建型设计模式,其核心思想在于确保一个类仅有一个实例存在,并且该实例由该类自行创建,随后向整个系统提供这一唯一实例。 #### 类图解析 在设计...

    设计模式单例模式示例代码(python--c++)

    单例模式是软件设计模式中的一种经典模式,其主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下非常有用,比如控制特定资源的访问,或者在整个应用中只创建一次数据库连接等。 在C++...

    C++实现Singleton单例模式

    本文档将详细介绍如何使用C++语言实现设计模式中的单例模式。单例模式是一种常用的设计模式,它可以确保一个类只能实例化一次。 单例模式的定义: 单例模式是一种创建型模式,它可以确保一个类只能实例化一次,并...

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

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

    设计模式专题之(一)单例模式---设计模式单例模式模式示例代码(python--c++)

    单例模式是软件设计模式中的一种基础且广泛应用的模式,其主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在资源管理、配置对象、缓存等场景下非常常见,因为它可以避免因频繁创建和销毁对象而...

    学习php设计模式 php实现单例模式(singleton)

    PHP中的单例模式是一种创建型设计模式,它用于确保一个类仅有一个实例,并提供一个全局访问点。单例模式主要适用于以下场景:当类只能有一个实例时;当实例需要被共享时;以及当创建一个新的实例会消耗大量资源时。 ...

    C# 设计模式之单例模式归纳总结

    "C# 设计模式之单例模式归纳总结" C# 设计模式之单例模式是一种常用的设计模式,它限制了类的实例化,使得某个类只能有一个实例,并提供了一个全局访问点来访问该实例。本文将对单例模式的定义、优缺点、实现要点和...

    C#经典设计模式及代码示例

    《C#经典设计模式及代码示例》是针对C#开发者深入理解并应用设计模式的一份宝贵资源。设计模式是软件工程中经过实践验证的、解决常见问题的有效模板,能够帮助程序员提高代码的可读性、可维护性和复用性。这本书结合...

Global site tag (gtag.js) - Google Analytics