单例模式设计(一)

简介: 饿汉模式 由名字我们就可以知道 "饿汉" 嘛,就比较急切,在类加载的时候就创建实例:1. 写一个类,在本类中构造实例,用static修饰,直接创建出来(提供一个现有的实例)2. 在本类中写一个方法获取到上面的实例3. 将这个类的构造方法设置为私有的,让外部不能 new 这个对象

目录


饿汉模式


懒汉模式


懒汉模式优化


饿汉模式

由名字我们就可以知道 "饿汉" 嘛,就比较急切,在类加载的时候就创建实例:


1. 写一个类,在本类中构造实例,用static修饰,直接创建出来(提供一个现有的实例)


2. 在本类中写一个方法获取到上面的实例


3. 将这个类的构造方法设置为私有的,让外部不能 new 这个对象

//饿汉模式:直接 static 一个实例(线程安全)
//期望这个类只能有一个实例
public class Demo1 {
    //只构造一个实例
    private static Demo1 instance = new Demo1();
    //获取这个实例
    public static Demo1 getInstance() {
        return instance;
    }
    //把构造方法设置为私有 外部不能 new 这个类对象
    private Demo1(){}
}

懒汉模式

由名字我们就可以知道 "懒汉" 嘛,就比较从容~,它是等到有人调用的时候再创建实例:


1. 写一个类,在本类中构造实例,用static修饰,赋值为空(等待有人调用)


2. 在本类中写一个方法获取到上面的实例


3. 将这个类的构造方法设置为私有的,让外部不能 new 这个对象

//懒汉模式:
//期望这个类只能有一个实例
public class Demo2 {
    private static Demo2 instance = null;
    //获取这个实例
    public static Demo2 getInstance() {
        if (instance == null) {
            instance = new Demo2();
        }
        return instance;
    }
    //把构造方法设置为私有 外部不能 new 这个类对象
    private Demo2(){}
}


目录
相关文章
|
9月前
|
NoSQL Java Redis
Jedis高版本的JedisPoolConfig没有maxActive和maxWait
在高版本的Jedis中,连接池配置属性发生了一些变化。通过使用 `JedisPoolConfig`中的新属性,可以更好地管理和优化Redis连接池。本指南提供了详细的配置方法和示例代码,帮助开发者快速上手并正确配置Jedis连接池。希望本文对您有所帮助,能够在项目中高效地使用Jedis与Redis。
255 14
|
运维 Prometheus 监控
自动化运维的魔法:使用Python脚本简化日常任务
【8月更文挑战第50天】在数字化时代的浪潮中,自动化运维成为提升效率、减少人为错误的利器。本文将通过一个实际案例,展示如何利用Python脚本实现自动化部署和监控,从而让运维工作变得更加轻松和高效。我们将一起探索代码的力量,解锁自动化运维的神秘面纱,让你的工作环境焕然一新。
281 81
|
测试技术 数据库 Android开发
大学生心理健康APP的设计与实现
大学生心理健康APP的设计与实现
844 0
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习与自然语言处理的前沿技术:Transformer模型的深度解析
探索深度学习与自然语言处理的前沿技术:Transformer模型的深度解析
474 1
|
11月前
|
数据采集 JavaScript 网络安全
为什么PHP爬虫抓取失败?解析cURL常见错误原因
豆瓣电影评分是电影市场的重要参考,通过网络爬虫技术可以高效采集评分数据,帮助电影制作和发行方优化策略。本文介绍使用PHP cURL库和代理IP技术抓取豆瓣电影评分的方法,解决反爬机制、网络设置和数据解析等问题,提供详细代码示例和优化建议。
400 0
为什么PHP爬虫抓取失败?解析cURL常见错误原因
|
消息中间件 监控 物联网
MQTT协议对接及RabbitMQ的使用记录
通过合理对接MQTT协议并利用RabbitMQ的强大功能,可以构建一个高效、可靠的消息通信系统。无论是物联网设备间的通信还是微服务架构下的服务间消息传递,MQTT和RabbitMQ的组合都提供了一个强有力的解决方案。在实际应用中,应根据具体需求和环境进行适当的配置和优化,以发挥出这两个技术的最大效能。
783 0
|
SQL 存储
离线数仓(七)【DIM 层开发】(3)
离线数仓(七)【DIM 层开发】
|
数据采集 存储 数据可视化
Pandas高级教程:数据清洗、转换与分析
Pandas是Python的数据分析库,提供Series和DataFrame数据结构及数据分析工具,便于数据清洗、转换和分析。本教程涵盖Pandas在数据清洗(如缺失值、重复值和异常值处理)、转换(数据类型转换和重塑)和分析(如描述性统计、分组聚合和可视化)的应用。通过学习Pandas,用户能更高效地处理和理解数据,为数据分析任务打下基础。
1365 3
|
存储 数据采集 搜索推荐
「Java面试」一次性带你搞明白面试必问题,谈谈你对ES的理解
ES全称是Elastic Search,它是一个建立在全文搜索引擎库Lucene基础上的开源搜索和分析引擎。ES它本身具有分布式存储、检索速度快的特性。所以,我们经常会用它来实现全文检索的功能。 Elastic官网对ES的定义已经不再是ElasticSearch这一个组件,而是指Elastic Stack生态。
240 0
|
Arthas 负载均衡 网络协议
Tomcat连接之KeepAlive逻辑分析
Tomcat连接之KeepAlive逻辑分析
705 1