`

Java中单例模式(Singleton)笔记__自用

    博客分类:
  • Java
阅读更多


注意三种单例模式的实现互相独立。因为偷懒把他们写在同一个类里了。

package HomeWork110306;

/**
 * 单例模式:保证一个java的类只有一个实例
 *   可以通过将构造方法声明成私有的,在类内部创建实例
 *   对外提供一个公用方法来获取这个实例
 *   饱汉模式:一般认为饱汉模式安全。每次申请一次内存,宁撑死不挨饿
 *   饥汉模式:注意饥汉模式下的公用方法必须是线程同步的,原因????
 *   其他模式:定义一个类,构造方法为private,所有方法为static的
 * @author wybin
 */
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;	  
	}
	
}


分享到:
评论
1 楼 随意而生 2015-03-22  
我知道一个是用lock加锁,在加锁前后都判断一次是否已经创建了实例。这样比起楼主的同步方法,效率应该更好了吧

相关推荐

    JAVA中单例模式的几种实现方式.doc

    ### JAVA中单例模式的几种实现方式 #### 1. 线程非安全的基本实现方式 单例模式是设计模式中的一种常用形式,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。在Java中,单例模式可以通过多种方式来...

    Java多线程编程环境中单例模式的实现

    ### Java多线程编程环境中单例模式的实现 #### 概述 单例模式是一种常用的软件设计模式,它确保一个类只有一个实例,并提供一个全局访问点。在Java中,单例模式的应用非常广泛,特别是在资源管理、日志记录、...

    java单例模式实例

    在Java中,有多种实现单例模式的方法,每种都有其特点和适用场景。接下来,我们将深入探讨这些实现方式。 首先,我们来看**懒汉式(Lazy Initialization)**。这种实现方式是在类被首次请求时才创建单例对象,延迟...

    浅谈Java中单例设计模式之构造方法私有化.pdf

    "浅谈Java中单例设计模式之构造方法私有化" 单例设计模式是 Java 中一种常用的设计模式,核心思想是将类的构造方法私有化,以控制实例化对象的产生。这种模式可以确保在程序中只有一个实例化对象存在,这对控制对象...

    加速器中单带电粒子模拟库_C++_C_下载.zip

    标题中的“加速器中单带电粒子模拟库_C++_C_下载.zip”指的是一个用于模拟加速器中单个带电粒子运动的软件库,它支持C++和C两种编程语言。这个库可能是科研和工程领域中用于粒子加速器设计、优化和分析的重要工具。 ...

    java 中单例模式饿汉式与懒汉式的对比

    java 中单例模式饿汉式与懒汉式的对比 java 中单例模式是保证一个类仅有一个实例,并提供一个访问它的全局访问点的设计模式。单例模式有以下特点:单例类只能有一个实例,单例类必须自己自己创建自己的唯一实例,...

    Java中单例模式详解

    在Java中,实现单例模式主要有三种方式:懒汉式、饿汉式和登记式。 **懒汉式单例**: 懒汉式单例的特点是在类第一次被使用时才创建实例,延迟加载,以节省资源。然而,非线程安全的懒汉式单例在多线程环境下可能...

    Kotlin中单例模式和Java的对比浅析

    Kotlin 中单例模式和 Java 的对比浅析 Kotlin 中单例模式是指在应用程序中确保某个类仅有一个实例,并提供一个全局访问点的机制。单例模式是一种常用的设计模式,在 Java 和 Kotlin 中都有多种实现方式。下面我们将...

    基于php设计模式中单例模式的应用分析

    单例模式是软件设计模式中的一种,它的核心思想是确保某个类在整个应用程序中只有一个实例存在。在PHP中,单例模式常用于管理共享资源,如数据库连接或全局配置,以优化性能并提供统一的访问入口。 单例模式的实现...

    Java中单例模式的7种写法

    Java中的单例模式是一种设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。下面将详细介绍7种不同的Java单例模式实现方式: 1. **懒汉式(非线程安全)**: 这是最简单的实现,延迟初始化,但在多线程...

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

    通过对C++中单件模式的实现方式以及应用场景的学习,可以帮助开发者更好地理解和运用这一模式,从而提高代码的质量和效率。同时,需要注意的是,在实际开发中要根据具体情况选择合适的实现方式,合理运用单件模式,...

    c++中单例模式对象的释放控制

    在C++编程领域,设计模式是解决特定问题的模板,其中单例模式(Singleton Pattern)是一种常用的创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点。然而,在C++中实现单例模式时,如何正确管理这个...

    Python中单例模式总结

    在Python编程中,单例模式是一种设计模式,它限制了类的实例化过程,确保一个类只有一个实例,并提供全局访问点。这种模式在需要频繁实例化然后销毁的对象,或者创建对象需要消耗大量资源的场景下非常有用,因为它...

    基于Python中单例模式的几种实现方式及优化详解

    ### 基于Python中单例模式的几种实现方式及优化详解 #### 一、单例模式概述 单例模式(Singleton Pattern)是面向对象设计模式中的一种,其主要目标是在整个应用程序中确保一个类只有一个实例,并提供一个全局访问...

    C++、MFC源代码Singleton_demo

    总结来说,这个项目提供了一个学习和实践C++和MFC中单例模式的实例,通过对"说明.htm"的学习和"代码中国.txt"的阅读,可以深入理解单例模式的原理及其在实际项目中的应用。同时,"C++、MFC源代码Singleton_demo"目录...

    深入解析Java的设计模式编程中单例模式的使用

    在Java中,实现单例模式通常有两种方式:饿汉式单例和懒汉式单例。 **饿汉式单例**: 饿汉式单例在类加载时就完成了初始化,因此类加载时间较长,但获取实例的速度非常快,且线程安全。代码如下: ```java public ...

    Java中单表和多表级联的增删改查

    "Java中单表和多表级联的增删改查"这个主题涵盖了基础的数据库操作以及更复杂的关联查询技术。以下是对这些知识点的详细解释: 1. **单表的增删改查(CRUD)**: - **Create(创建)**: 在Java中,通常使用JDBC...

    Android中单例模式的一些坑小结

    本篇文章将详细探讨Android中单例模式的坑以及如何避免它们。 首先,让我们分析非线程安全的单例模式。以下是一个简单的非线程安全单例类: ```java class Singleton { private static Singleton singleton; ...

Global site tag (gtag.js) - Google Analytics