【设计模式】-01单例模式

1.什么是单例模式?

这里援引百度百科对单例模式的定义:单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例.

说简单点就是运行系统中的每个对象最多只能有一个对应的实例.

2.为什么要使用单例模式?

主要是为了节省系统资源和确保系统中运行实例状态的唯一性,试想如果每个对象都拥有多个重复的实例的话,不仅仅会浪费内存空间,还会因为多个对象所处的状态不同而陷入混乱,到底用哪一个实例???

3.如何实现?

单例模式的实现主要有两种方式,一种是饿汉式,一种是懒汉式,在实际开发中,前者用的更多一点,因为前者是线程安全的.

3.1饿汉式

/**
 * 设计模式-单例-饿汉式
 */
public class Singleton {
    private static Singleton instance = new Singleton();
    private Singleton(){}
    public static Singleton getInstance(){
        return instance;
    }
}

 

3.2懒汉式

/**
 * 设计模式-单例-懒汉式
 */
public class Singleton {
    private static Singleton instance;
    private Singleton(){}
    public static Singleton getInstance(){
        if (instance == null){ //此处线程不安全,多线程下可能会被创建出多个实例
            instance = new Singleton();
        }
        return instance;
    }
}

4.总结

饿汉式实现相对比较简单,线程安全,缺点主要是在类加载时就被加载进内存,浪费内存空间.懒汉式线程不安全,虽然可以在方法上加synchronized锁来解决线程不安全问题,但会因为加锁而降低性能,故不推荐使用,推荐饿汉式.

 

    原文作者:设计模式
    原文地址: https://blog.csdn.net/lovexiaotaozi/article/details/83896573
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞