• 单例模式


    一.什么是单例模式?

      定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例

    二.类图如下:

      

    三.类图解析

      Singleton类称为单例类,通过使用private的构造函数确保了在一个应用中只产生一个实例,并且是自行实例化的

    四.单例模式的优点

      由于单例模式在内存中只有一个实例,减少了内存开支,特别是一个对象频繁的创建、销毁时,并且创建或销毁时性能无法优化,单例模式的优势就非常明显了

    五.单例模式的缺点

      单例模式一般没有接口,扩展很困难。另外单例模式与单一职责原则有冲突,一个类应该只实现一个逻辑,而不关心它是否是单例的

    六.单例模式的应用场景

      1.要求生成唯一序列号的环境

      2.在项目中需要一个共享访问点或共享数据时,如一个Web页面上的计数器,可以不用把每次刷新都记录到数据库中,使用单例模式保持计数器的值,并确保是线程安全的

      3.创建一个对象需要消耗过多资源,如要访问IO和数据库等资源

      4.需要定义大量的静态常量和静态方法的环境,可以采用单例模式

    七.单例模式的注意事项

      1.注意单例模式的线程安全的问题,尤其是在高并发的情况下

      2.要考虑对象的复制情况。在java中对象默认是不可以被复制的,若实现了Cloneable接口,并实现了clone方法,则是可以通过对象复制方式创建一个新对象,对象复制是不需要调用类的构造函数,因此即使是私有的构造函数,对象仍然可以被复制

    八.Spring对单例模式的应用

      在Spring中,每个Bean默认都是单例的,这样的优点是Spring容器可以管理Bean的生命周期,决定什么时候创建,什么时候销毁,销毁的时候需要做什么处理等等

  • 相关阅读:
    [leetcode]Largest Number
    [leetcode]Second Highest Salary
    [leetcode]Combine Two Tables
    [leetode]Binary Search Tree Iterator
    [leetcode]Excel Sheet Column Number
    [leetcode]Two Sum III
    [leetcode]Majority Element
    Mysql5.7.26解压版(免安装版)简单快速配置步骤,5分钟搞定(win10-64位系统)
    APP移动端自动化测试工具选型“兵器谱”一览(主流开源工具)
    Jmeter+jenkins如何快速搭建接口和性能测试持续集成解决方案-[基于windows篇]
  • 原文地址:https://www.cnblogs.com/lyc-code/p/12384570.html
Copyright © 2020-2023  润新知