JAVA中单例模式_Java中哪些是单例的

JAVA中单例模式_Java中哪些是单例的1.说明1)单例模式:确保一个类只有一个实例,自行实例化并向系统提供这个实例2)单例模式分类:饿单例模式(类加载时实例化一个对象给自己的引用),懒单例模式(调用取得实例的方法如getInstance时才会实例化对象)(java中饿单例模式性能优于懒单例模式,c++中一般使用懒单例模式)3)单例模式要素:a)私有构造方法b)私有静态引用指向自己实例c)以自己实例为返回值的公有静态方法2.实例饿单例…

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

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

1. 说明

1)单例模式:确保一个类只有一个实例,自行实例化并向系统提供这个实例

2)单例模式分类:饿单例模式(类加载时实例化一个对象给自己的引用),懒单例模式(调用取得实例的方法如getInstance时才会实例化对象)(java中饿单例模式性能优于懒单例模式,c++中一般使用懒单例模式)

3)单例模式要素:

a)私有构造方法

b)私有静态引用指向自己实例

c)以自己实例为返回值的公有静态方法

2.实例

饿单例模式:

复制代码 代码如下:

package com.wish.modedesign;

public class HungrySingleton {

private static HungrySingleton instance  = new HungrySingleton();

private HungrySingleton(){

}

public static HungrySingleton getInstance(){

return instance;

}

}

懒单例模式:

复制代码 代码如下:

package com.wish.modedesign;

public class Singleton {

private Singleton(){

}

private static Singleton instance;

public static synchronized Singleton getInstance(){   //多线程时注意线程安全

if(instance == null){

instance = new Singleton();

}

return instance;

}

}

测试类Driver.java

复制代码 代码如下:

package com.wish.modedesign;

public class Driver {

public static void main(String[] args) {

Singleton s1 = Singleton.getInstance();

Singleton s2 = Singleton.getInstance();

System.out.println(s1==s2);   //true

}

}

3.优点和适用场景

1)单例模式的优点:

在内存中只有一个对象,节省内存空间。

避免频繁的创建销毁对象,可以提高性能。

避免对共享资源的多重占用。

可以全局访问。

2)适用场景:

需要频繁实例化然后销毁的对象。

创建对象时耗时过多或者耗资源过多,但又经常用到的对象。

有状态的工具类对象。

频繁访问数据库或文件的对象。

4.使用时注意事项

1)使用时不能用反射模式创建单例,否则会实例化一个新的对象

2)使用懒单例模式时注意线程安全问题

3)饿单例模式和懒单例模式构造方法都是私有的,因而是不能被继承的,有些单例模式可以被继承(如登记式模式)

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169688.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月11日 上午9:46
下一篇 2022年8月11日 上午10:00


相关推荐

  • linux时间戳转换为时间_linux时间转换为时间戳

    linux时间戳转换为时间_linux时间转换为时间戳/***************************************************************************************************************************************************************************************************uni…

    2026年4月13日
    5
  • 怎么强制关闭pycharm_pycharm如何关闭项目

    怎么强制关闭pycharm_pycharm如何关闭项目pycharm的科学模式有时候很烦,如果你用pycharm的时候他会突然闪出来一个界面,提示你开启科学模式,不小心开启了全英文下怎么关闭呐?首先打开这个界面之后发现这里有科学模式按钮,但是这个只是控制单个文件的打开下面的往下拉发现就有了这个内容,打开或者关闭它就行了!…

    2022年8月26日
    9
  • 华硕K550D怎么拆开另加内存条

    华硕K550D怎么拆开另加内存条我的电脑是华硕 K55D nbsp 如图所示

    2026年3月26日
    0
  • N-MOS电平转换电路分析

    N-MOS电平转换电路分析下面这个电路是一个利用 N MOS 管搭建的 5V 与 3 3V 之间电平转换的电路 一般在 I2C 电平转换上用的比较多 当然也可以用于其他低速信号的电平转换 这个电路设计有一个关键点就是两边都需要加上拉 分别是两种电平的电压值 我们来看一下他是如何工作的 1 当左边为高电平时 Vgs 0 MOS 管不通 则右边被 3 3V 上拉 为高电平 2 当左边为低电平时 右边的电通过 MOS 管的内部体二

    2026年3月26日
    2
  • PyCharm配置anaconda环境的步骤详解

    PyCharm配置anaconda环境的步骤详解更多编程教程请到 菜鸟教程 https www piaodoo com 友情链接 好看站 http www nrso net PyCharm 是一款很好用很流行的 python 编辑器 Anaconda 是专注于数据分析的 Python 发行版本 包含了 conda Python 等 190 多个科学包及其依赖项 Anaconda 通过管理工具包 开发环境 Python 版本 大大简化了你的工作流程 不仅可以方便地安装 更新 卸载工具包 而且安装时能自动安装相应的依赖包 同时还能使用不同的虚拟环境隔离不同

    2026年3月27日
    2
  • 【Linux环境变量与命令行参数】常见环境变量 | 环境变量的全局属性 | 命令行参数

    【Linux环境变量与命令行参数】常见环境变量 | 环境变量的全局属性 | 命令行参数对于环境变量 主要介绍基本概念及三四个环境变量 PATH HOME SHELL HISTSIZE 其中 PATH 作为 敲门砖 我们会更详细讲解 理解环境变量的全局属性 环境变量是可以被子进程继承 注意区分 C 里的继承 环境变量的组织方式 其次会介绍命令行参数 main 函数的参数 注意学习了本文的知识 并不代表己经掌握了环境变量 因为还有很多关于环境变量使用的技巧及常见的环境变量没有过多的介绍 后面有需要用到环境变量的地方在展开

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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