`

单例模式的两种方式

阅读更多

首先,单例模式是指在程序运行的过程中,保证该类的实例只有一个可以被外界访问(可用于读取配置文件,以保证没有对外部资源的并发操作)。

单例模式分为饱汉模式和饥汉模式。饱汉模式,也是我们说熟知的单例模式,为类在初始化的时候就进行了类的实例化,getInstance方法只需要自动获取就可以了;饥汉模式为类在初始化时并为进行类的实例化,而是在getInstance方法中,先对对象进行判断,如果为null,就进行实例化,再返回,如果不为空,则直接返回该实例对象。

代码模拟:

1.饱汉模式:

public class Singleton{

    // 1.私有构造器

    private Singleton(){}

   // 2.静态实例

    private staitc Singleton instance = new Singleton();

   // 3.外界访问的方法

    public staitc Singleton getInstance(){

      return instance;

    }

}

2.饥汉模式:

public class Singleton{

    private Singleton(){}

    private static Singleton instance = null;

    public static synchronized Singleton getInstance(){ //这里必须要加上synchronized关键字以解决并发问题

        if(instance == null){

            instance = new Singleton();

        }

        return instance;

    }

}

至于两种模式的区别,第一种不需要考虑多线程并发访问问题,第二种需要考虑。但是如果是工厂模式,该工厂中缓存了很多实例,这个类加载的时候不会去验证是否使用,此时会影响效率,此时可以考虑使用饥汉模式的单例。)

分享到:
评论

相关推荐

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

    "设计模式单例模式和工厂模式综合应用"的主题聚焦于两种常用的设计模式:单例模式和工厂模式,并探讨它们如何协同工作来实现高效、灵活的代码结构。这个主题尤其适用于Java编程语言,因为Java的面向对象特性使得设计...

    单例模式代码实现

    这个讲的是单例模式的多种不同实现方式,希望对单例感兴趣的同学看看

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

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

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

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

    设计模式——单例模式

    实现单例模式主要有两种方式:饿汉式和懒汉式。 ### **饿汉式单例模式** 饿汉式单例模式在类加载时就完成了实例化,因此也称为静态初始化。这种方式保证了线程安全,但可能会造成不必要的资源浪费,因为即使未使用...

    五种单例模式

    在Java、C#等面向对象语言中,实现单例模式有多种方法,下面我们将详细探讨五种常见的单例模式实现方式: 1. **饿汉式单例**: 这种方式是在类加载时就完成实例化,避免了线程同步问题。由于实例在类加载时已经...

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

    - **复杂性增加**:相对于前两种方式,其实现更为复杂,需要考虑异常处理等问题。 - **动态加载**:可以通过传递不同的类名动态创建单例对象。 ### 总结 单例模式是软件开发中常用的设计模式之一,用于确保一个类...

    两种单例实现方式

    在 Java 中,单例模式可以通过两种方式来实现:类加载时进行对象的实例化和第一次访问时进行对象的实例化。 类加载时进行对象的实例化 在这种方式下,单例对象是在类加载时实例化的。下面是一个简单的示例代码: ...

    设计模式——策略模式 & 单例模式

    策略模式和单例模式是软件设计中两种非常重要的设计模式,它们在实际开发中有着广泛的应用。在这篇文章中,我们将深入探讨这两种模式的核心概念、实现方式以及如何在实际项目中运用。 策略模式是一种行为设计模式,...

    设计模式单例模式

    单例模式是软件设计模式中的一种基础且广泛应用的模式,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在系统中需要频繁创建和销毁对象,且对象创建成本较高,或者需要共享资源的情况下非常...

    C++两种线程安全的单例模式的实现

    使用"懒汉模式"与"饿汉模式"实现c++的单例模式,并且确保了单例模式的第一次实例化的线程安全,以及程序结束时,单例对象的资源收回,以防内存资源的泄漏

    使用单例模式创建学生管理系统(饿汉式、懒汉式)

    在这个场景中,我们将探讨如何使用单例模式来创建一个学生管理系统,主要涉及“饿汉式”和“懒汉式”两种实现方式。 **饿汉式单例** 饿汉式单例在类加载时就完成了实例化,因此它是线程安全的。这种方式保证了单例...

    单例模式.ppt

    每种实现方式都有其优缺点,选择哪种方式取决于特定的应用场景,如性能需求、线程安全性和代码简洁性等因素。单例模式虽然方便,但过度使用可能导致设计复杂度增加,不易测试,以及违反了单一职责原则,因此在实际...

    单例模式和工厂模式代码

    单例模式和工厂模式是两种常见的软件设计模式,在面向对象编程中扮演着重要的角色。它们都是为了解决特定的问题而提出的解决方案,但有着不同的应用场景和设计思路。 **单例模式** 是一种限制类实例化次数的模式,...

    设计模式 中的 单例模式和观察者模式

    在给定的标题和描述中,我们关注的是两种重要的设计模式:单例模式和观察者模式。 首先,让我们深入了解单例模式。单例模式是一种确保一个类只有一个实例,并提供全局访问点的设计模式。这种模式在资源管理、缓存、...

    Java单例模式应用研究.pdf

    经典单例模式通常有两种实现方式:**饿汉式**和**懒汉式**。 ##### 1. 经典单例类实现 ```java public class UserService { // 私有的静态对象 private static UserService userService = null; // 私有的构造...

    单例模式_命令模式

    单例模式和命令模式是两种常见的设计模式,在软件开发中有着广泛的应用。它们分别解决了不同的问题,但在实际项目中,可以巧妙地结合使用,以提高代码的灵活性和可维护性。 单例模式是一种确保一个类只有一个实例,...

    工厂模式与单例模式

    在软件设计模式中,工厂模式和单例模式是两种非常基础且重要的模式,它们都是用于解决对象创建问题,但有着不同的设计理念和应用场景。本篇文章将深入探讨这两种模式,并结合具体的代码示例`myFactoryDemo`进行讲解...

Global site tag (gtag.js) - Google Analytics