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

JAVA 单例的两种模式

阅读更多
/**
 * 单例模式:保证一个java的类只有一个实例
 *   可以通过将构造方法声明成私有的,在类内部创建实例
 *   对外提供一个公用方法来获取这个实例
 *   饱汉模式:一般认为饱汉模式安全。每次申请一次内存,宁撑死不挨饿
 *   饥汉模式:注意饥汉模式下的公用方法必须是线程同步的,原因????
 *   其他模式:定义一个类,构造方法为private,所有方法为static的
 */
public class Singleton {
	/**1.饱汉模式
	 * 每次都要生成一次对象,所以饱了。这样总的类对象不是多个了吗?
	 * 是指每次调用这个类时都要new一次吗?可是内存不是只有一份吗?
	 */
	private Singleton(){//构造方法是私有的		
	}
	//实例化代码放在静态代码块里可以提高程序执行效率,但可能更占空间
	private final static Singleton instance = new Singleton();
	//提供公用方法,用于获取类内部的类实例
	public static Singleton getInstance(){
		return instance;
	}
	
	
	/**2.饥汉模式,注意其getInstance方法是synchronized的
	 * 使用getInstance判断,当实例为空时才生成
	 * 不用每次生成对象,第一次使用生成实例
	 * 即刚开始类实例对象为null,还未申请内存。在getInstance里针对类实例进行判断
	 * 为空,即饥饿状态,需要创建后返回,否则直接返回
	 * @author wybin
	 */
	private Singleton(){
	}
	private static instance = null;//先声明一个类本身实例成员。初始化为空。先不申请内存
	public static synchronized Singleton getInstance(){
		if(instance == null) instance = new Singleton();
		return instance;
	}
	
	/**3.其他模式(自己猜的)
	 * 构造方法为private
	 * 其他方法全部为static
	 */
	private Singleton(){
	}
	private static instance = null;
	private static Singleton getInstance(){
		if(instance == null) instance = new Singleton();
		return instance;	  
	}
	
}
分享到:
评论

相关推荐

    JAVA单例模式的几种实现方法

    ### JAVA单例模式的几种实现方法 #### 一、饿汉式单例类 饿汉式单例类是在类初始化时就已经完成了实例化的操作。这种实现方式简单且线程安全,因为实例化过程是在编译期间完成的,不会受到多线程的影响。 **代码...

    Java单例模式与工厂模式简单示例代码

    下面我们将详细探讨这两种模式以及它们在Java中的实现。 **单例模式** 是一种限制类实例化次数的设计模式,确保一个类只有一个实例,并提供一个全局访问点。这样做的主要目的是为了节约系统资源,例如数据库连接池...

    Java单例模式应用研究.pdf

    ### Java单例模式应用研究 #### 一、单例模式概述 单例模式(Singleton Pattern)作为一种最基本的创建型设计模式,其主要目的是控制一个类的实例化过程,确保在整个应用程序中仅存在一个实例,并且该实例能够被全局...

    设计模式单例模式和工厂模式综合应用

    **手机生产.docx**文档可能包含了关于如何使用这两种模式实现手机生产系统的详细步骤和解释。这可能包括类的结构、接口定义、单例的实现方式以及工厂方法的具体应用。阅读这份文档将有助于理解这两种模式的结合使用...

    单例和策略模式示例

    这两种模式在实际开发中有着广泛的应用,它们分别解决了不同的问题,提高了代码的可维护性和可扩展性。 首先,我们来看单例模式。单例模式是一种保证一个类只有一个实例,并提供一个全局访问点的设计模式。这样做的...

    java 单例模式(懒汉式与饿汉式).docx

    单例设计模式又分为两种方式,懒汉式和饿汉式。 懒汉式单例是一种延迟加载的单例模式,它只有当调用 getInstance 的时候,才会初始化这个单例。这种模式的优点是可以减少资源的加载和性能上的负担,但是它需要使用 ...

    java中的单例模式

    在Java中,实现单例模式主要有两种方式:饿汉模式和懒汉模式。 1. **饿汉模式**: 饿汉模式是在类加载时就完成了初始化,所以类加载比较慢,但获取对象的速度快,线程安全。在上述代码中,`Singleton`类的实例`...

    三种工厂设计模式和两种单例模式

    在本文中,我们将深入探讨三种工厂设计模式——简单工厂模式、抽象工厂模式和工厂方法模式,以及两种单例模式——饿汉单例模式和懒汉单例模式。这些模式都是面向对象设计中的重要组成部分,对于理解和构建可维护、可...

    java单例设计模式

    Java单例设计模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供全局访问点。在Java编程中,单例模式常用于管理共享资源,如数据库连接池、线程池或者配置信息等,以提高效率并减少系统内存开销。这个...

    设计模式之单例模式(结合工厂模式)

    单例模式是软件设计模式中的一种经典模式,它...通过阅读和分析这些代码,你可以更深入地理解这两种模式的实现细节及其在实际开发中的作用。同时,也可以尝试自己编写并测试不同的单例实现,以加深对单例模式的理解。

    JAVA单例模式(三种)

    Java单例模式是一种常用的软件设计模式,它的核心思想是确保一个类只有一个实例,并提供全局访问点。在Java编程中,单例模式被广泛应用于控制资源的共享,例如数据库连接池、线程池或者日志系统等。在本篇文章中,...

    java 单例模式(懒汉式与饿汉式)

    单例设计模式又分为两种方式,懒汉式和饿汉式。 懒汉式单例 懒汉式单例模式是指只有当调用getInstance的时候,才会初始化这个单例。这种方法可以保证线程安全,又减轻了资源加载和性能上的负担。下面是一个懒汉式...

    Java实现单例模式[汇编].pdf

    这种方式适用于需要管理多个不同类型单例的情况,但相比于前两种,它的实现较为复杂。 除了以上三种经典的实现方式,Java 1.5之后引入了枚举类型,也提供了一种更简洁且线程安全的单例实现方式。通过定义一个枚举类...

    【ASP.NET编程知识】java 单例模式(饿汉模式与懒汉模式).docx

    单例模式分为两种主要实现方式:饿汉模式和懒汉模式。 1. **饿汉模式**: 饿汉模式在类加载时就完成了初始化,因此类加载时会立即创建单例对象。这种方式确保了线程安全,因为对象的创建在类加载时已经完成,不会...

    java 单例模式(饿汉模式与懒汉模式).docx

    单例模式有两种常见的实现方式:饿汉模式和懒汉模式。 1. **饿汉模式**: - 饿汉模式的特点是在类加载时就完成了初始化,因此线程安全。它的实现方式是通过静态常量或者静态代码块来立即创建单例对象。 ```java ...

    java:单例模式 作为对象的创建模式

    在Java中,常见的单例实现方式有两种:饿汉式(Eager Initialization)和懒汉式(Lazy Initialization)。 **饿汉式**:在类加载时就完成了初始化,所以没有线程安全问题,但是不管是否使用,都会立即创建单例对象...

    java单例模式课程.pdf

    Java单例模式是一种设计模式,它允许类只有一个实例,并提供一个全局访问点。在上述的场景中,我们探讨了如何通过单例模式来优化读取配置文件的过程。配置文件是许多应用程序的重要组成部分,它们通常存储应用程序...

    java单例模式详解

    Java单例模式是一种常见的设计模式,它用于控制类的实例化过程,确保一个类在整个应用程序中只有一个实例存在。这种模式通常用于管理共享资源或者需要频繁创建和销毁的对象,以节省系统资源并提供全局访问点。 单例...

Global site tag (gtag.js) - Google Analytics