移动学习网 导航

java常用的几种单例模式(懒汉式,饿汉式

2024-05-20m.verywind.com
~ 单件模式用途:
单件模式属于工厂模式的特例,只是它不需要输入参数并且始终返回同一对象的引用。
单件模式能够保证某一类型对象在系统中的唯一性,即某类在系统中只有一个实例。它的用途十分广泛,打个比方,我们开发了一个简单的留言板,用户的每一次留言都要将留言信息写入到数据库中,最直观的方法是没次写入都建立一个数据库的链接。这是个简单的方法,在不考虑并发的时候这也是个不错的选择。但实际上,一个网站是并发的,并且有可能是存在大量并发操作的。如果我们对每次写入都创建一个数据库连接,那么很容易的系统会出现瓶颈,系统的精力将会很多的放在维护链接上而非直接查询操作上。这显然是不可取的。
如果我们能够保证系统中自始至终只有唯一一个数据库连接对象,显然我们会节省很多内存开销和cpu利用率。这就是单件模式的用途。当然单件模式不仅仅只用于这样的情况。在《设计模式:可复用面向对象软件的基础》一书中对单件模式的适用性有如下描述:
1、当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。
2、当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。
下面对单件模式的懒汉式与饿汉式进行简单介绍:
1、饿汉式:在程序启动或单件模式类被加载的时候,单件模式实例就已经被创建。
2、懒汉式:当程序第一次访问单件模式实例时才进行创建。
如何选择:如果单件模式实例在系统中经常会被用到,饿汉式是一个不错的选择。

所谓“懒汉式”与“饿汉式”的区别,是在与建立单例对象的时间不同。
“懒汉式”是在你真正用到的时候才去建这个单例对象:
比如:有个单例对象
private
static
student
student
=
null;
//不建立对象
student
getinstance(){
if(student
==
null)
{
//先判断是否为空
student
=
new
student();
//懒汉式做法
}
return
student;
}
“饿汉式”是在不管你用的用不上,一开始就建立这个单例对象:
比如:有个单例对象
private
static
student
student
=
new
student();
//建立对象
student
getinstance(){
return
student;
//直接返回单例对象
}

  • java如何只存一次数据
  • 答:在Java中只存储一次数据可以使用单例模式来实现。单例模式是一种常用的设计模式,它可以保证一个类只有一个实例,并提供一个全局访问点。在实现单例模式时,一般采用懒汉式或饿汉式两种方式。1、饿汉式单例模式:在类加载时就创建实例。2、懒汉式单例模式:在第一次使用时才创建实例。

  • java中的单例模式的代码怎么写
  • 答:我从我的博客里把我的文章粘贴过来吧,对于单例模式模式应该有比较清楚的解释:单例模式在我们日常的项目中十分常见,当我们在项目中需要一个这样的一个对象,这个对象在内存中只能有一个实例,这时我们就需要用到单例。一般说来,单例模式通常有以下几种:1.饥汉式单例 public class Singleton { pri...

  • 单例模式--史上最全总结
  • 答:这种模式在类加载时就创建实例,确保线程安全,但可能会导致资源浪费,尤其是在初始化耗时或占用大量内存时。它的优点是高效,但缺点在于资源管理不灵活。懒汉式单例(DCL)通过延迟加载,懒汉式降低了内存消耗,提高了代码的可扩展性。然而,由于使用条件初始化,代码可读性稍弱,并且反射操作可能破坏单例...

  • 如何实现单例模式
  • 答:单例模式实现方式有以下五种:1、饿汉模式。线程安全,调用效率高,不能延时加载。2、懒汉模式。线程安全,调用效率不高,能延时加载。3、双重检测锁模式。由因JVM底层模型原因,偶尔会出问题,不建议使用。4、静态内部类式。线程安全,调用效率高,可以延时加载。5、枚举类。线程安全,调用效率高,不能...

  • 深入解读单例设计模式:懒汉与饿汉的奥秘
  • 答:单例设计模式确保一个类仅有一个实例,并提供一个全局访问点。它避免了不必要的对象创建与销毁,提高了程序的性能和数据一致性。本文将深入探讨单例设计模式的懒汉与饿汉写法,帮助读者更好地理解这一模式的奥秘。🔒私有构造器和静态成员单例设计模式的关键在于私有构造器和静态成员。将构造器私有化...

  • 单例模式——懒汉式和饿汉式详解
  • 答:单例模式属于 创建型模式 的一种,应用于保证一个类仅有一个实例的场景下,并且提供了一个访问它的全局访问点,如spring中的全局访问点BeanFactory,spring下所有的bean都是单例。单例模式的特点:从系统启动到终止,整个过程只会产生一个实例。单例模式常用写法:懒汉式,饿汉式,注册式,序列化式。下...

  • 单例模式的实例
  • 答:我认为使用单例模式的时机是当实例存在多个会引起程序逻辑错误的时候。比如类似有序的号码生成器这样的东西,怎么可以允许一个应用上存在多个呢?Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。一般Singleton模式通常有三种形式:第一种形式:懒汉式,也是常用的形式。 public ...

  • java单例模式是什么意思
  • 答:Java单例模式的实现方式 Java单例模式的实现方式有多种,最常用的是饿汉式和懒汉式。饿汉式在类加载的时候就会创建实例,懒汉式则需要在第一次使用时才会创建实例。另外还有一种双重检查锁定的方式,它结合了饿汉式和懒汉式的优点,既实现了线程安全,又保证了延迟加载。Java单例模式的使用场景 Java单例...

  • 什么是单例设计模式
  • 答:* 懒汉式单例 * @author Administrator * */ public class Singleton2 { private static Singleton2 singleton = null; 限制产生多个对象 private Singleton2() { } ...>> 问题三:什么是单例模式 java模式之单例模式: 单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个...

  • 大学生福音Java常见设计模式总结
  • 答:单例模式的优点在于:系统中只存在一个共用的实例对象,无需频繁创建和销毁对象,节约了系统资源,提高系统的性能可以严格控制客户怎么样以及何时访问单例对象。单例模式的写法有好几种,主要有三种:懒汉式单例、饿汉式单例、登记式单例。 5、创建型-原型模式: 在Java 中,原型模式的核心是就是原型类 Prototype,...

    户户网菜鸟学习
    联系邮箱
    返回顶部
    移动学习网