java 单例模式 —饿汉式懒汉式

java 单例模式 —饿汉式懒汉式目录单例设计模式饿汉式懒汉式饿汉式vs懒汉式结语单例设计模式所谓单例设计模式,就是采取一定的方法在整个软件系统中,对某个类只能存在一个对象实例1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。饿汉式饿汉式:在程序启动或单例模式类被加载的时候,单例模式实例就已经被创建。上例子!packagecom.happy.demo;publicclassSingleton…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

目录

单例设计模式

饿汉式

懒汉式

饿汉式vs懒汉式

结语


单例设计模式

所谓单例设计模式,就是采取一定的方法在整个软件系统中,对某个类只能存在一个对象实例

1、单例类只能有一个实例

2、单例类必须自己创建自己的唯一实例。

3、单例类必须给所有其他对象提供这一实例。

饿汉式

饿汉式:在程序启动或单例模式类被加载的时候,单例模式实例就已经被创建。

 上例子!

package com.happy.demo;


public class SingletonTest{
  public static void main(String[] args){

  happy h1 = happy.getInstance();
  happy h2 = happy.getInstance();
  System.out.println(h1 == h2);//true
  }
}
//this is 饿汉式~
class happy{
   //1.私有化类的构造器
  private happy(){

  }
  
  //2.内部创建类的对象
  //3.要求此对象也必须声明为静态的
  private static happy instance = new happy();

  //4.提供公共的静态的方法,返回类的对象
  public static happy getInstance(){
      return instance;
  }
}

懒汉式

懒汉式:当程序第一次访问单例模式实例时才进行创建。

废话不多说,上代码!

package com.happy.demo;


public class SingletonTest{
  public static void main(String[] args){

  nice h1 = nice.getInstance();
  nice h2 = nice.getInstance();
  System.out.println(h1 == h2);//true
  }
}
//this is 懒汉式~
class nice{
   //1.私有化类的构造器
  private nice(){

  }
  
  //2.声明当前类对象,没有初始化
  //3.要求此对象也必须声明为static的
  private static nice instance = null;

  //4.声明public,static的放回当前类对象的方法
  public static nice getInstance(){
	  if(instance == null){
		  instance = new nice();
	  }
      return instance;
  }
}

饿汉式vs懒汉式

区分饿汉式和懒汉式水
饿汉式:
坏处:对象加载时间过长。
好处:饿汉式是线程安全的

懒汉式:好处:延迟对象的创建。
坏处:线程不安全—>到多线程内容时,再修改

 

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

结语

一起加油冲冲冲~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160033.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • LinkedList浅析

    LinkedList浅析LinkedList简介LinkedList是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。LinkedList实现List接口,能对它进行队列操作。LinkedList实现Deque接口,即能将LinkedList当作双端队列使用。LinkedList实现了Cloneable接口,即覆盖了函数clon…

  • mysql服务器失败1396_Mysql ERROR 1396 (HY000) 错误的解决办法

    mysql服务器失败1396_Mysql ERROR 1396 (HY000) 错误的解决办法建立用户的时候报告这个错误:ERROR1396(HY000):OperationCREATEUSERfailedfor‘abc’@’localhost’原因是mysql中已经有了这个用户,从mysql.user中直接删除delete,然后刷新权限FLUSHPRIVILEGES,再建用户就不会有这个问题了。如果是dropuser的话,mysql内部会自动刷新一下,那么再建也不会…

  • 获取程序自身窗口句柄(cmd)

    获取程序自身窗口句柄(cmd)HWNDGetConsoleHwnd(void){#defineMY_BUFSIZE1024//Buffersizeforconsolewindowtitles.HWNDhwndFound;//Thisiswhatisreturnedtothecaller.charpszNewWindowTitle[MY_BUFS…

  • 数据库的第一范式,第二范式,第三范式,BCNF范式理解

    数据库的第一范式,第二范式,第三范式,BCNF范式理解第一范式属性的原子性所谓的第一范式就是数据库中的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性,如果出现重复的属性则需要重新构建实体,新的实体由重复的属性构成。见图分析图:在进货和销售中有两个重复的属性(数量和单价),并且进价和销售是可以再分割的,不满足原子性,即不满足第一范式,可以修改为下面的两个实体第二范式属性完…

  • Oracle ASMM和AMM

    Oracle ASMM和AMMASMM(AutomaticSharedMemoryManagement,自动共享内存管理)是Oracle10g引入的概念。通过使用ASMM,就不需要手工设置相关内存组件的大小,而只为SGA设置一个总的大小,Oracle的MMAN进程(MemoryManagerProcess,内存管理进程)会随着时间推移,根据系统负载的变化和内存需要,自动调整SGA中各个组件的内存大小。ASM…

  • 什么软件可以测试网络的稳定性,网络稳定性测试软件

    什么软件可以测试网络的稳定性,网络稳定性测试软件@ECHOoffcolor0Aecho欢迎进行网络稳定状况测试(测试开始时间%date%%time%)echo=======================================================================echo运行脚本后不要关闭这个窗口,让它一直测试你的网络,不想测试了需手动关闭echo当你老掉线的时候运行本脚本,建议测试时间在30分钟左…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号