当前位置: 首页 > wzjs >正文

企业建设网站的主要目的中企动力免费做网站

企业建设网站的主要目的,中企动力免费做网站,网站页面制作视频,建筑网片用途文章目录 简介问题1. 确保一个类只有一个实例2. 为该实例提供全局访问点 解决方案示例重构前:重构后: 拓展volatile 在单例模式中的双重作用 总结 简介 单例是一种创建型设计模式,它可以确保一个类只有一个实例,同时为该实例提供…

文章目录

  • 简介
  • 问题
    • 1. 确保一个类只有一个实例
    • 2. 为该实例提供全局访问点
  • 解决方案
  • 示例
    • 重构前:
    • 重构后:
  • 拓展
    • volatile 在单例模式中的双重作用
  • 总结

简介

单例是一种创建型设计模式,它可以确保一个类只有一个实例,同时为该实例提供全局访问点。

问题

单例模式同时解决了两个问题:

1. 确保一个类只有一个实例

最常见的场景是控制对某些共享资源(例如数据库或文件)的访问。假设你已经创建了一个对象,又要创建一个相同类的对象。你不会得到一个新的对象,而是会得到你已经创建的对象。这种行为是无法通过常规构造函数实现,因为构造函数调用在设计上必须始终返回一个新对象。

2. 为该实例提供全局访问点

全局变量非常方便,但很不安全,因为任何代码都可能覆盖这些变量的内容并使程序崩溃。单例模式类似全局变量,允许你从程序中的任何位置访问某个对象。但是,它还可以保护这个实例不被其他代码覆盖。还有一点,为了不让实现问题1 的代码分散在各个地方,要把它限制在一个类中,特别是当你的其余代码已经依赖了它的时候。

解决方案

所有 Singleton 的实现都有这样两个共同的步骤:

  • 把默认构造函数设为私有,防止其他对象使用new创建它。
  • 创建一个充当构造函数的静态创建方法。这个方法会调用私有构造函数来创建一个对象并把它缓存在静态字段中。这个方法的所有后续调用都会返回缓存好的对象。

如果你的代码能访问 Singleton 类,那么它就可以调用 Singleton 的静态方法。无论何时调用该方法,都会返回相同的对象。

示例

数据库连接

重构前:

class DBUtil {public Connection getConn() {return DriverManager.getConnection(URL); // 每次新建连接消耗500ms+}
}// 调用端
new DBUtil().getConn().execute("SELECT..."); 
new DBUtil().getConn().execute("UPDATE..."); // 产生两个独立连接

重构后:

public class Database {private static volatile Database instance; private Connection connection;// 私有化构造并建立物理连接private Database() {this.connection = DriverManager.getConnection(JDBC_URL); // 真实连接建立}// 双重检查锁定实现线程安全public static Database getInstance() {if (instance == null) { synchronized (Database.class) {if (instance == null) {instance = new Database(); }}}return instance;}// 统一入口方法(可扩展缓存逻辑)public ResultSet query(String sql) {return connection.createStatement().executeQuery(sql); // 所有SQL通过单连接执行}
}

拓展

volatile 在单例模式中的双重作用

  1. 可见性保证(Visibility)
    阻止线程的本地缓存与主内存数据不同步,确保所有线程读取到的是最新实例状态。
  2. 禁止指令重排序(Happens-Before)
    消除 JVM 级别可能的危险优化(非原子化对象构造的三步指令):
未加 volatile 时的风险时序:
A线程: 分配内存 → 写入未初始化的对象引用(指令排序导致)
B线程: 获取到非空引用 → 访问未完成初始化的对象(空指针异常)volatile 强制时序:
分配内存 → 初始化对象 → 写入引用(三步骤原子性可见)

总结

在这里插入图片描述

  1. 单例(Sin­gle­ton)类:声明了一个叫做get­Instance获的静态方法来返回实例。单例的构造函数必须为私有。调用获取实例方法必须是获取单例对象的唯一方式。

文章转载自:

http://yC7JPa26.qrqcr.cn
http://ryeaRBZZ.qrqcr.cn
http://inE1mckN.qrqcr.cn
http://xKHpBX0x.qrqcr.cn
http://cjU6IO1P.qrqcr.cn
http://JZOI0IeL.qrqcr.cn
http://JPE1hSii.qrqcr.cn
http://jor4leaU.qrqcr.cn
http://XxVPxHQ0.qrqcr.cn
http://8ceVB8So.qrqcr.cn
http://m6X3AC7c.qrqcr.cn
http://os2hS4dY.qrqcr.cn
http://HTWtXla5.qrqcr.cn
http://GctayBNs.qrqcr.cn
http://K3xVF46D.qrqcr.cn
http://rD62HQVG.qrqcr.cn
http://4b9BjoRL.qrqcr.cn
http://eRmi7PY3.qrqcr.cn
http://maWfVbhD.qrqcr.cn
http://2G35evoo.qrqcr.cn
http://z5OijQyD.qrqcr.cn
http://jGjho5r1.qrqcr.cn
http://NZlMPijl.qrqcr.cn
http://TaTSQ9S3.qrqcr.cn
http://428cVixA.qrqcr.cn
http://5W5iVWoO.qrqcr.cn
http://wFAFeUuv.qrqcr.cn
http://dd5cmgth.qrqcr.cn
http://LeBowyzl.qrqcr.cn
http://ihYSwUHP.qrqcr.cn
http://www.dtcms.com/wzjs/650308.html

相关文章:

  • 一个阿里云怎么做两个网站做计算机项目的网站
  • 东营网站建设入门网站 多语言处理
  • 手机软件页面设计网站企业网络架构拓扑图
  • 广东省网站免备案手机网站模板制作教程
  • 企业模板建站沈阳网站页面设计公司
  • wordpress 站点管理员华山论剑西凤酒网站建设
  • 怎么做网站推广图片小红书网页版
  • 建手机wap网站大概多少钱怎么用html5做自适应网站
  • 动易与php环境架设网站遵义信息网
  • 青海培训网站建设公司微信关注公众号
  • 网站编辑是网页制作么南宁seo内部优化
  • 卢镇seo网站优化排名网站建设费用英文
  • 员工管理网站模板品牌公关活动策划
  • 海西州住房建设局网站wordpress data src
  • 网站主机选择与优化建设银行网站怎么登陆不了了
  • 无锡哪家网站做的比较好本地运行wordpress
  • 局域网网站建设协议wordpress 科技公司
  • 网站后台 全局配置微商城网站开发视频
  • 58同城济南网站建设静态购物网站模板
  • 大型网站建设济南兴田德润o评价百度云怎么找资源
  • 建设一个视频网站的成本网站公司怎么做
  • 网站建设数据库怎么弄物流的网站模板免费下载
  • 做网站站怎么赚钱快速做网站的软件
  • 长葛网站制作赣州科技有限公司
  • 马云之前做的网站崂山区城市规划建设局网站
  • 做网站非法吗电子商务c2c模式
  • 网站内外链建设上海工程建设协会网站
  • 厦门跨境电商前十流程优化的方法
  • 在线建设房屋设计网站最常用的搜索引擎有哪些
  • 劳动仲裁院网站建设瓯北网站建设