`
STAR_JAVA
  • 浏览: 2203 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

设计模式学习笔记-单例模式

阅读更多

设计模式学习笔记-单例模式

在网上学习了一段时间,总结了经典的2种单例模式的java写法

写法1:

 

package org.star_java.designpattern;

public class Singleton1
{
	//volatile保证每次取instance都从主内存读取
	private volatile static Singleton1 instance = null;
	
	//保证无法new出这个类
	private Singleton1()
	{super();}

	public static Singleton1 getInstance()
	{
		if (instance == null)//DCL 双锁检测
		{
			synchronized (Singleton1.class)//线程安全
			{
				if (instance == null)//保证单例
				{
					instance = new Singleton1();
				}
			}
		}
		return instance;
	}
}

 

写法2:

 

package org.star_java.designpattern;

public class Singleton2
{
	//保证无法new出这个类
	private Singleton2()
	{super();}
	
	//由JVM保重线程安全以及类的初始化和单例
	private static class SingletonHolder
	{
		static final Singleton2 Instance = new Singleton2();
	}
	
	public static Singleton2 getInstance()
	{
		return SingletonHolder.Instance;
	}
}

注意事项:

1.单例模式一定要有一个private的构造器,防止new类

2.单例模式最好不要实现Cloneable,Serializable这样的接口,防止从这些途径生成类

3.单例模式要防止通过反射的setAccessible方法来突破private够着函数的限制,但是这些一般不需要自己处理,由应用服务器后台保证

分享到:
评论

相关推荐

    《C++20设计模式》学习笔记-第5章单例模式

    《C++20设计模式》学习笔记-第5章单例模式

    Java 版设计模式学习笔记-java-design-patterns.zip

    这个“Java版设计模式学习笔记”涵盖了多种设计模式,旨在帮助开发者更好地理解和应用这些模式。让我们深入探讨一下其中可能包含的关键知识点。 一、单例模式 单例模式确保一个类只有一个实例,并提供一个全局访问...

    最新设计模式超级详解+Tomcat架构源码分析+Spring源码分析 资深级设计模型课程

    Spring源码分析,web源码分析,Tomcat架构源码分析都是非常深入的源码级课程,期待研究设计模式和深入学习源码内功的朋友们,一定要仔细的学习研究。 (0);目录中文件数:1个 ├─3.代码.zip (1)\1.笔记;目录中文...

    Head First设计模式读书笔记-DesignPatterns.zip

    《Head First设计模式》是一本深受开发者喜爱的设计模式学习书籍,它以易懂且生动的方式介绍了23种经典设计模式。这些模式是软件工程中经过实践验证的最佳实践,旨在提高代码的可重用性、可读性和可维护性。下面,...

    设计模式学习笔记大全

    以上就是压缩包中的设计模式学习笔记涉及到的主要内容。通过对这些模式的理解和应用,开发者可以更好地解决软件设计中的问题,提升软件的质量和可维护性。每种模式都有其适用场景,理解其背后的意图和应用场景是关键...

    23个设计模式图解--学习笔记

    在《23个设计模式图解--学习笔记》中,我们探讨了这些模式,以便于理解和应用到实际开发中。以下是这23个设计模式的详细说明: 1. **工厂方法**(Factory Method):定义一个用于创建对象的接口,让子类决定实例化...

    HeadFirst设计模式学习笔记

    《HeadFirst设计模式学习笔记》是一份详尽的资料,旨在帮助读者深入理解并掌握设计模式这一编程领域的核心概念。设计模式是软件工程中的一种最佳实践,它在解决常见问题时提供了一种标准的解决方案,使得代码更易于...

    17-Java单例模式的学习笔记1

    Java 单例模式是一种设计模式,它用于保证一个类只有一个实例,并提供全局访问点。这种模式在需要控制类的实例化次数,或者当类的创建是昂贵的操作时非常有用。以下是对不同单例实现方式的详细说明: 1. **懒汉式**...

    23种设计模式学习笔记

    这个“23种设计模式学习笔记”文档将引导你深入理解这些模式,并帮助你在实际编程中有效地应用它们。以下是对23种设计模式的详细解读: 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。它常用于控制...

    Java设计模式学习笔记.pdf

    在学习Java设计模式时,掌握其概念、应用、优点和缺点非常重要。设计模式是软件开发中经常使用的一种通用解决方案模板,用于解决特定上下文中的常见问题。它们源于设计模式的研究,通常被认为是软件设计中的最佳实践...

    C#设计模式学习笔记

    以下是对“C#设计模式学习笔记”中涉及的一些关键知识点的详细解释。 1. **设计模式的基本概念**: 设计模式是一种在特定上下文中已被证明有效的解决方案模板,它描述了如何在软件设计中解决常见问题。设计模式...

    PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式

    通过学习和使用设计模式,开发者能够创建更加清晰、稳定、易于维护的软件系统。 单例模式通过确保类的唯一实例,简化了对实例的管理,并且保证了全局只有一个实例。工厂模式通过封装对象的创建逻辑,提高了系统的...

    23种设计模式学习笔记及源码

    这个压缩包文件包含了23种设计模式的学习笔记和源码,旨在帮助开发者深入理解并熟练运用这些模式。以下是对每种设计模式的详细解释,以及它们在Java编程中的应用。 1. **单例模式**:确保一个类只有一个实例,并...

    设计模式之美—学习笔记

    在这个“设计模式之美”的学习笔记中,我们将探讨一些主要的设计模式,以及它们在实际开发中的应用。 首先,我们从创建型模式开始。这类模式主要用于对象的创建,如单例模式(Singleton)、工厂模式(Factory ...

    设计模式学习笔记及其模式特点总结

    这些文档涵盖了设计模式的基础知识,通过阅读和学习,你可以深入了解每种模式的原理、应用场景及其实现方式,从而提升你的软件设计能力。绘图1.vsd可能是用于描绘设计模式的UML类图或其他图表,它能直观地展示各对象...

    韩顺平_Java设计模式笔记.docx

    通过以上内容,我们可以看到韩顺平老师的Java设计模式笔记涵盖了设计模式的基础概念、常见面试题解析、设计原则等内容,并通过具体案例来阐述设计模式的实际应用价值,旨在帮助学习者深刻理解并掌握设计模式,从而在...

    尚硅谷设计模式源码笔记课件.zip

    1) 内容包括: 设计模式七大原则(单一职责、接口隔离、依赖倒转、里氏替换、开闭原则、迪米特法则、合成复用)、UML类图(类的依赖、泛化和实现、类的关联、聚合和组合) 23种设计模式包括:创建型模式:单例模式(8种...

    GoF 23种设计模式学习笔记

    "GoF 23种设计模式学习笔记" 是一个深入探讨这23个经典设计模式的资源,这些模式最初由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位作者在1994年的著作《设计模式:可复用面向对象软件的基础》中...

Global site tag (gtag.js) - Google Analytics