首页 > 其他分享 >设计模式之单例设计模式

设计模式之单例设计模式

时间:2022-11-22 16:25:56浏览次数:50  
标签:多线程 加载 采用 单例 设计模式 延迟

图片

1.1 基本概念

  • 在某些特殊场合中,⼀个类对外提供且只提供⼀个对象时,这样的类叫做单例类,⽽设计单例类的流程和思想叫做单例设计模式。

1.2 实现流程

  • 私有化构造方法,使用private关键字修饰。
  • 声明本类类型的引用指向本类类型的对象,并使用private static关键字共同修饰。
  • 提供公有的get方法负责将对象返回出去,并使用public static关键字共同修饰。

1.3 采用饿汉式实现

1.3.1 核心代码

图片

1.3.2 特点概述

  • 保证了多线程安全,执行效率比较高。
  • 类加载时创建对象,容易产生垃圾对象且浪费内存空间,没有达到延迟加载的效果。

1.4 采用懒汉式实现

1.4.1 核心代码

图片

1.4.2 特点概述

  • 调用方法才会创建对象,避免垃圾对象产生和内存空间的浪费,达到了延迟加载的效果。
  • 需要加锁才能保证多线程安全,加锁导致执行效率比较低。

1.5 采用双重锁校验实现

1.5.1 核心代码

图片

1.5.2 特点概述

  • 采用双重锁机制既能保证多线程安全,又能保证执行效率比较高,同时达到了延迟加载的效果。

1.6 采用静态内部类实现

1.6.1 核心代码

图片

1.6.2 特点概述

  • 只适用于静态域,不适用于实例域延迟初始化时使用。
  • 采用静态内部类来保证多线程安全和执行效率以及延迟加载,比双重锁校验式更加简单。

1.7 采用枚举实现

1.7.1 核心代码

图片

1.7.2 特点概述

  • 实现单例设计模式的最佳方式,保证多线程安全和执行效率,支持序列化机制,绝对防止多次实例的创建。

1.8 实际应用

  • Web应用中的配置对象,由于配置文件是共享资源,通常采用单例模式。
  • 网站或者App程序的计数器,通常也采用单例模式,便于进行同步。
  • 操作系统中的任务管理器和回收站,都是采用的单例模式。
    图片

更多精彩欢迎关注微信公众号《格子衫007》!

图片

标签:多线程,加载,采用,单例,设计模式,延迟
From: https://www.cnblogs.com/gezishan007/p/16915432.html

相关文章

  • Template Method设计模式
    TemplateMethod动机(Motivation)在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架与应用之间的关系)而......
  • Observer设计模式
    Observer/Event动机(Motivation)在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系”——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。......
  • Decorator设计模式
    Decorator动机(Motivation)在某些情况下我们可能会“过度地使用继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能......
  • Strategy设计模式
    程序的复用性是二进制层面的复用,而不是代码的复制粘贴Strategy动机(Motivation)在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使......
  • Android设计模式系列(7)--SDK源码之命令模式
    命令模式,在.net,java平台的事件机制用的非常多,几乎每天都与之打交道。android中对我印象最深的就是多线程多进程的环境,所以必然大量使用到Runbable,Thread,其实用的就是最......
  • Android设计模式系列(1)--SDK源码之组合模式
    Android设计模式系列(1)–SDK源码之组合模式Android中对组合模式的应用,可谓是泛滥成粥,随处可见,那就是View和ViewGroup类的使用。在androidUI设计,几乎所有的widget和布局类......
  • 设计模式
    设计模式共有23中设计模式,Gof23。GoF23一种思维,一种态度,一种进步 创建型模式:(描述怎么创建一个对象)单例模式、工厂模式、抽象工厂模式、建造者模式、原型......
  • js设计模式=封装
    js封装案例【1】<script>varBook=function(num){varnum;//类私有变量varname;//类私有变量functioncheck(){};//类私有方法this.checkName=functio......
  • Java设计模式 - 24种
    设计模式的七大原则   开闭原则:对扩展开放、对修改关闭。   单一指责原则:一个类只做一件事。   依赖倒转原则:类似于ioc,采用接口编程。   迪米特原则:高内聚......
  • python单例模式
    详情参考:https://www.cnblogs.com/shenbuer/p/7724091.html一、单例模式的概述:单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。......