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

单例设计模式

时间:2022-12-05 16:22:36浏览次数:34  
标签:单例 对象 实例 饿汉 设计模式 懒汉

单例设计模式

什么是单例设计模式

  1. 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个实例对象,并且该类只提供一个取得其对象实例的方法。

  2. 单例模式有两种方式:(1)饿汉式 (2)懒汉式

单例(单个的实例)

一、 饿汉式

不管程序是否需要这个对象的实例,总是在类加载的时候就先创建好实例,理解起来就像不管一个人想不想吃东西都把吃的先买好,如同饿怕了一样。

步骤:

  1. 构造器私有化 —>防止直接new

  2. 类的内部创建对象

  3. 向外暴露一个静态的公共方法。

  4. 代码实现

    饿汉式

二、懒汉式

如果一个对象使用频率不高,占用内存还特别大,明显就不合适用饿汉式了,这时就需要一种懒加载的思想,当程序需要这个实例的时候才去创建对象,就如同一个人懒的饿到不行了才去吃东西。

步骤:

  1. 构造器仍然私有化

  2. 定义一个static静态属性对象

  3. 提供一个public的static方法,可以返回一个Cat对象

  4. 懒汉式,只有当用户使用getInstance()时,才返回cat对象,后面再次调用时,会返回上次创建的cat对象//从而保证了单例

懒汉式

三、饿汉式 VS 懒汉式

  1. 二者最主要的区别在于创建对象的时机不同:饿汉式是在类加载就创建了对象实例,而懒汉式是在使用时才创建。
  2. 饿汉式不存在线程安全问题,懒汉式存在线程安全问题。
  3. 饿汉式存在浪费资源的可能。因为如果一个对象实例都没有使用,那么饿汉式创建的对象就浪费了,懒汉式使使用时才创建,就不存在这个问题。
  4. 在JavaSE标准类中,java.lang.Runtime就是经典的单例模式。

标签:单例,对象,实例,饿汉,设计模式,懒汉
From: https://www.cnblogs.com/zh-Note/p/16952595.html

相关文章

  • 软件设计模式之模拟游角色选择(Darren建造者模式)
    o(︶︿︶)o唉,今天的状态不是很好,但是学习还是要继续的,今天和大家一起分享一下建造者模式,记得之前自己之前一直再想QQ秀换装是怎么是怎么是实现的,今天看了建造者模式我明白了........
  • 软件设计模式之外观设计模式(Darren)
    先回顾一下之前我们已经讲过的设计模式:简单工厂模式,策略模式,单一职责原则,开放封闭原则,依赖倒转原则,装饰模式,抽象工厂模式,模板方法模式,迪米特法则;今天我们来讲一下......
  • Selenium4+Python3系列(十) - Page Object设计模式
    前言​​PageObject(PO)​​​模式,是​​Selenium​​实战中最为流行,并且被自动化测试同学所熟悉和推崇的一种设计模式之一。在设计测试时,把页面元素定位和元素操作方法按照......
  • 设计模式之代理模式学习分享[Darren]
    很高兴又在每晚的这个时候和博友有分享今天的学习成果了,感谢大家一直对Darren的支持,也希望各位博友们能将自己的好文章分享出来,在此Darren只是抛砖,希望大家不要吝啬自己的学......
  • Spring中配合hibernate使用的简单例子
    最近在看SPRING和hibernate,学习了spring和hibernate之间整合,下面举出一个例子予以说明.    首先,可以注入的是sessionfactory,因为sessionfactory的Datasource可以......
  • 单例模式常用模板类
    单例模式可以确保软件生命周期内仅有一个实例化对象,方便各处便利调用。单例模板类申明定义如下:template<typenameT>classSingleTon{public:staticT&getIns......
  • 设计模式——初学学习经验
    设计模式各位读者朋友你们好,我是你们的好朋友IT黑铁,在这学期的学习过程中初步认识和学习了设计模式和架构思想。以下内容最全的几个是我当前有点理解的模式,其余内容缺少的......
  • 前端修炼之路-设计模式
    什么是设计模式?在软件开发程中通用的解决方案。目前有23中设计模式设计原则:单一职责原则(SRP)、开放封闭原则(OCP)、最少知识原则(LKP)1、代理模式场景1:花店替人送花//声明......
  • 设计模式之状态模式
    概述状态模式用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。当系统中某个对象存在多个状态,这些状态之间可以进行转换,而且对象在不同状态下行为不相同时......
  • 责任链,桥接,适配器,单例,命令哪个设计模式你最常用呢
    设计原则一、你都了解哪些设计原则,你对这些设计原则有哪些心得1、单一职责原则4、依赖倒置原则2、开闭原则5、里氏替换原则3、接口隔离原则6、迪米特法则1、单一......