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

单例模式

时间:2024-02-11 23:23:04浏览次数:21  
标签:单例 对象 创建 模式 饿汉 懒汉

介绍

实现步骤

饿汉单例模式(急汉子,娃娃亲,类一加载,对象就创建了)

为什么叫饿汉式?

类被加载时,对象就被创建了。(太饿了,所以先创建?)常常创建的对象是重量级的对象,如果不用会造成资源浪费。

步骤

代码举例

image

懒汉单例模式(调用静态方法才创建,考前突击,屎到肛门不得不拉)

为什么叫懒汉式?

类被加载时,对象并不会被创建,只有getInstance()调用静态方法时才会创建

步骤

image

代码

image

怎么保证单例

饿汉模式:对象用static修饰,静态变量的初始化只会被执行一次
懒汉模式:在getInstance()方法中添加if语句判断

饿汉模式VS懒汉模式

标签:单例,对象,创建,模式,饿汉,懒汉
From: https://www.cnblogs.com/xxm163/p/18013612

相关文章

  • 设计模式--桥接模式(Bridge Pattern)
    桥接模式(BridgePattern)是一种结构型设计模式,它主要是用于将抽象部分与实现部分分离,使它们可以独立地变化。桥接模式主要包含以下几个角色:Abstraction(抽象类):定义抽象类的接口,它维护对Implementor的引用。RefinedAbstraction(扩充抽象类):扩充由Abstraction定义的接口。Implement......
  • 设计模式
    设计模式创建一个接口;publicinterfaceShape{voiddraw();}创建实现接口的实体类;publicclassRectangleimplementsShape{@Overridepublicvoiddraw(){System.out.println("InsideRectangle::draw()method.");}}创建一个工厂......
  • Mac电脑安装RedisCluster集群(非Docker模式)
    第1步,新建redis.confredis.conf内容如下:port7021cluster-enabledyes              //启用集群模式cluster-config-filenodes.conf     //集群的配置文件cluster-node-timeout5000appendonlyyesdaemonizeyesbind0.0.0.0   ......
  • 策略模式的代码实践示例
    一、定义策略模式,针对每一个不同的类型,调用具有共同接口的不同实现类,从而使得它们可以相互替换。策略模式,针对实现同一接口的不同的类,采用不同的策略。比如,面对高级会员、初级会员会采用不同的折扣。策略模式,可以避免大量的if和else。二、角色策略模式涉及到三个角色:●......
  • ADI CCES ADSPI2156X UART DMA模式中,获取当前存到第几个数CurrXCount, 重新从头开始接
    关键的一些寄存器关键的寄存器pUARTDstDMARegstypedefstruct{uint32_tnTmrDevNum;/*TimerassosiatedtotheselectedUARTforAutobaud*/ADI_UART_TypeDef*constpUARTRegs;/*Pointertobaseadd......
  • Python实现软件设计模式10:装饰器模式 Decorator Pattern
    概念是一种对象结构型模式可以在不改变一个对象本身功能的基础上给对象增加额外的新行为是一种用于替代继承的技术,他通过一种无须定义子类的方式给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系引入了装饰类,在装饰类中既可以调用待装饰的原有类的方法,还可以增......
  • 设计模式-模板方法模式(Template Method Pattern)
    #模板方法模式(TemplateMethodPattern)-记忆关键字:模板方法-定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤-类型:行为型-![UML类图](./design-pattern.png)##1.涉及的角色1)Abstr......
  • 分布式事务(八):Seata之AT模式应用
    Seata中AT模式的官方文档地址:https://seata.io/zh-cn/docs/dev/mode/at-mode.html。AT模式是一种无侵入的分布式事务解决方案,基于两阶段提交协议实现的,用户的业务SQL处理作为一阶段,Seata会根据一阶段的执行结果自动判断二阶段的提交或回滚。1、整体机制Seata的AT模式是......
  • 了解策略模式和状态模式,并理解二者差异
    策略模式和状态模式的代码结构非常相似,其UML类图更是一致,容易让人困惑。究其原因,是没有理解两种模式的设计目的,以至于明明设计了状态模式的代码结构,仍以策略模式的形式使用这些代码。策略模式策略模式比较简单,分析应用类,将类中用于完成特定任务的不同操作抽离成一组独立的类,称之......
  • Python实现软件设计模式9:组合模式 Composite Pattern
    动机如何将容器和叶子进行递归组合,使得用户在使用时无须对它们进行区分,可以一致地对待容器和叶子?典型案例如:文件系统,在树形目录结构中,包含文件和文件夹两类不同的元素;在文件夹中可以继续包含文件或子文件夹,在文件中不能再包含子文件或者子文件夹。概念组合多个对象形成树形......