`

两种单例模式:饿汉式与懒汉式

阅读更多
按照加载方式的不同,单例模式有两种实现:

private:只能在同一个类中使用

static:该类是类方法,不能调用实例方法。/类全局变量

final:方法或成员变量不能被修饰

1、饿汉式

public class EagerSigleton{

private static final EagerSigleton instance=new EagerSigleton();

private EagerSigleton(){}////私有构造方法

public EagerSigleton getInstance(){//静态工厂方法

return instance;

}

}

2、懒汉式

public class LazySigleton{

private static final LazySigleton instance=null;

private LazySigleton(){}//私有构造函数

public synchronized LazySigleton getInstance(){//静态工厂方法,注意这里的synchronized

if(instance==null){

instance=new LazySigleton();

}

return instance;

}

}

分析对比:

相同点:

        单例模式属于创建模式,保证在同一个jvm中仅仅存在该类的一个实例。在上面两种的单例模式中,可以看出,1、两种方式的构造函数都是私有的。2、对外接口都是工厂方法。

不同点:

       饿汉式是在类装载时直接得到该类的实例,可以说式前期绑定的。而懒汉式在类加载时并没有指向具体的某个对象。而是当调用工厂方法后才被实例化。因此,前者速度快,后者速度慢。但后者可以加载其他的类,(也就是动态扩展)灵活性高。
分享到:
评论

相关推荐

    【设计模式】(四)–创建型模式–单例模式

    【设计模式】(四)–创建型模式–单例模式单例模式的定义饿汉式单例模式懒汉式单例模式饿汉式与懒汉式的区别:单例模式的优点单例模式的缺点Java中其他生成单例的方式使用Spring框架,Spring框架默认就是单例双重...

    设计模式经典案例之单例模式

    单例模式主要有懒汉式和饿汉式两种实现,饿汉式不会有线程安全的问题,但是提前构造对象占用了一定的资源,如果对内存要求较低的场景可以使用饿汉式实现;懒汉式应使用DCL机制来避免多线程竞争资源的问题,并且懒汉...

    设计模式单例模式PPT学习教案.pptx

    在单例模式的实现中,有两种常见的实现方式:饿汉式单例和懒汉式单例。饿汉式单例是在类加载时创建实例,而懒汉式单例是在第一次使用时创建实例。两种实现方式都可以实现单例模式,但是它们有不同的优缺点。 单例...

    单例模式讲解说明与实例

    单例模式是 Java 中一种常见的设计模式,分为懒汉式单例、饿汉式单例和登记式单例三种。单例模式有以下特点: 1. 单例类只能有一个实例。 2. 单例类必须自己创建自己的唯一实例。 3. 单例类必须给所有其他对象提供...

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

    主要介绍了java 中单例模式饿汉式与懒汉式的对比的相关资料,这里对这两种单例模式进行对比,希望大家能理解并应用,需要的朋友可以参考下

    单例模式,属于创建类型的一种常用的软件设计模式 通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要,也有可能一个线程中

    通常单例模式在Java语言中,有两种构建方式: 懒汉式—线程不安全:最基础的实现方式,线程上下文单例,不需要共享给所有线程,也不需要加synchronize之类的锁,以提高性能。 懒汉式—线程安全:加上synchronize之类...

    c# 单例模式的实现方法

    单例模式的实现分为两种:饿汉式和懒汉式。前者是在静态构造函数执行时就立即实例化,后者是在程序执行过程中第一次需要时再实例化。两者有各自适用的场景,实现方式也都很简单,唯一在设计时要考虑的一个问题就是:...

    设计模式的代码样例

    单例模式的实现通常有两种方式:“饿汉式”和“懒汉式”。 单例模式是将将构造方法限定为private避免了类在外部被实例化,在同一个虚拟机范围内,Singleton的唯一实例只能通过提供的入口获得[例如getInstance()方法...

    Java单例模式实现

    单例设计模式有两种形式的,一种是懒汉式,一种是饿汉式的。 我认为单例设计模式可以帮助我们更好的管理项目中的某些资源问题。 饿汉式 静态成员变量 我们利用Java关键字static特性,在类初始化就被加载,并在以后的...

    酒店管理系统源码下载java-Design-Pattern:It'seasytounderstandforbeginners/适用于设计模式的

    主要介绍了单例模式的饿汉式和懒汉式两种形式。 适用场景: 保证类只有一个实例。 举例说明: 1.电脑中的任务管理器,不管打开多少次,始终只有一个。 2.Hibernate中 的 SessionFactory,MyBatis 中的 ...

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

    该模式有八种实现方式,包括饿汉式、懒汉式、双重检查、静态内部类、枚举等。单例设计模式的优点是提供了全局访问点,缺点是可能会导致资源浪费和性能问题。 五、设计模式的重要性和应用场景 设计模式在软件工程中...

    传智播客扫地僧视频讲义源码

    本教程共分为5个部分,第一部分是C语言提高部分,第二部分为C++基础部分,第三部分为C++进阶部分,第四部分为C、C++及数据结构基础部分,第五部分为C_C++与设计模式基础,内容非常详细. 第一部分 C语言提高部分目录...

Global site tag (gtag.js) - Google Analytics