Singleton 模式在 Java 中的应用

给jdbc加connection pool NULL 博文链接:https://bg090721.iteye.com/blog/1563371 立即下载
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 程序中经常有这样的要求,整个程序运行时只有一个实例被使用。 比如:数据库连接池,系统参数配置,Java API 中的 Runtime, Calendar ... 如何实现这种需求成为一个值得讨论的问题。 以往的做法,是在程序的某个类里面(比如是 GlobalObject )建立一个这个此种类的实例,然后规定 所有需要用到此类的,都从 GlobalObject 那里获得,看下面的例子: public class ConnectionPoolManager { public ConnectionPoolManager { // do some initialize work } public Connection getConnection(){ .... } } public class GlobalObject { private ConnectionPoolManager connectionPoolManager; public GlobalObject () { connectionPoolManager = new ConnectionPoolManager(); ... } public void getConnectionPoolManager() { return connectionPoolManager; } } public class QueryFunctions { public static Collection findStudentByName(String name){ ConnectionPoolManager = globalObject.getConnectionPoolManager(); Connection connection = connectionPoolManager.getConnection(); // query database } } 但这样做有如下缺点: 其他人可能 调用 ConnectionPoolManager 的构造函数自己建立一个 数据库连接池,导致 程序中存在多个 ConnectionPoolManager,人为的规定往往得不到好的实施。 GlobalObject 其实就是一个 C 语言中的全局变量,与面向对象的方法相冲突。 因此,可以使用 设计模式 中的 Singleton (单件)模式来完成以上的需求: Java API 中的 Runtime 等等用的就是这种方法。 代码如下: public class ConnectionPoolManager { private static instance = null; private ConnectionPoolManager() { // do some initialize work } public static void getInstance() { if (instance == null){ instance = new ConnectionPoolManager(); } return instance; } public Connection getConnection(){ } } ConnectionPoolManager 的使用 public class QueryFunctions { public static Collection findStudentByName(String name){ ConnectPoolManager connectionPoolManager = ConnectionPoolManager.getInstance(); Connection conn = connectionPoolManager.getConnection(); // query database } } 1.instance 是私有的,开始时赋值为 null,外部只有通过 getInstance 方法才能获得他。 2.构造方法是私有的,这点很重要,保证只有这个类自己才能够调用,其他的类无法调用此构造函数。 3.getInstance 方法中: if 语句,保证只有一个 instance 存在 唯一的一个 ConnectionPoolManager 在第一次调用的时候被建立。 下面是另一个例子: java.lang.Runtime 我刚看了 Runtime 的实现如下: public class Runtime { private static Runtime currentRuntime = new Runtime(); public static Runtime getRuntime() { return currentRuntime; } /** Don‘t let anyone else instantiate this class */ // 够狠 private Runtime() {} } 它在定义变量时创建 唯一的 Runtime 实例。 Java语言在设计的时候就使用了很多 设计模式的思想,像 Collection 中的 Iterator 模式, Event 中的 Observer 模式,Applet 中的 Templete 模式,对象创建时的 Factory 模式,这些 模式大多可以从 Java 的类的命名中体现出来,希望大家在学习 Java 时多注意对 设计模式 的学习。 参考: 设计模式:可复用面向对象软件的基础 (Gang of Four 的 Design Pattern 经典) Thinking in Pattern : http://www.mindview.net/Books/TIPatterns/ 还是 Bruce Eckel 写的。 Design Pattern Java : ftp://cinc.dns2go.com/pub/doc/pattern/java
Leads、SDR、MQL、SQL、L2C术语概念,线索创建与清洗、线索分级模型、线索流转策略、线索的统计与分析 CRM中的“Leads”是什么?笔者在文中不仅较为全面地介绍了相关术语概念,还分析了线索的创建与清洗、线索的分级模型、线索流转策略以及线索的统计与分析。 阅读详情

相关推荐

细聊Oracle通过ODBC数据源连接SQL Server数据库

    类似文章搜索引擎上有很多,内容大致相同,今天所谓细聊是因为我在借鉴这些文章时候走了些弯路,所以写此文,为自己备忘,同时如果能为初涉此处知识点的小伙伴提供些帮助就更好了,废话不多说。    我的应用场景:    项目系统使用oracle数据库,与客户的第三方系统供应商实现资源共享,对方为sql server数据库;    我的测试开发环境为64bitwin7PC机,本机上装有64位Oracl...

xueren_83的博客 1万+

Sigleton java应用

  [精华] Singleton 模式 在 Java 中的应用http://www.chinaunix.net 作者:cinc  发表于:2002-09-10 12:49:44【发表评论】 【查看原文】 【Java讨论区】【关闭】[这个贴子最后由cinc在 2002/09/05 04:07pm 编辑

zhb8015的专栏 770

差分运算放大电路实战:如何用OP07搭建高精度信号采集系统(附电路图)

本文以OP07高精度运算放大器为核心,详细阐述了差分运算放大电路的设计与实现。针对微弱信号采集中的共模干扰难题,文章从电路选型、核心器件剖析、实战电路设计、PCB布局到实测验证,提供了完整的工程实践指南,并附有电路图,旨在帮助工程师构建稳定可靠的高精度信号采集前端系统。

ss78901的博客 1019

Java Singleton(单件)模式

程序中经常有这样的要求,整个程序运行时只有一个实例被使用。 比如:数据库连接池,系统参数配置,Java API 中的 Runtime, Calendar ... 如何实现这种需求成为一个值得讨论的问题。Java Singleton 模式用来保证在运行的应用程序中,一个Class只是实例化一次,也就是只有一个相应的对象存在。在 web 程序中我们会用一个核心的分配功能的Servlet程序,在这里...

yeluowuhen的专栏 255

新手避坑指南:用Silvaco Atlas搞定GaN HEMT电热仿真的完整流程(附代码解读)

本文详细介绍了使用Silvaco Atlas进行GaN HEMT电热特性仿真的完整流程,特别针对新手常见问题提供避坑指南。从软件环境配置、结构定义、网格划分到物理模型设置,逐步解析关键步骤,并附有代码解读和调试技巧,帮助读者快速掌握GaN器件仿真的核心技术。

weixin_29215815的博客 597

在 Linux/Debian/Ubuntu 上使用 Brasero 刻录光盘

在 Ubuntu 系统中,Brasero 是一个非常方便的光盘刻录工具。无论是创建数据光盘、音频光盘还是刻录光盘镜像文件,Brasero 都能轻松胜任。本文将介绍如何在 Ubuntu 上安装和使用 Brasero 进行光盘刻录。

I AM COMING BACK... 3553

内存管理 Boost::singleton_pool

singleton_pool与pool的接口完全一致,可以分配简单数据类型(POD)的内存指针,但它是一个单件,并提供线程安全。 由于目前Boost还未提供标准的单件库,singleton_pool在其内部实现了一个较简单、泛型的单件类,保证在main()函数运行之前就创建单件(详情可参考4.6.1小节,117页)。 singleton_pool位于名字空间boost,为了使用sing

记事本 6027

反激开关电源设计全解析:从CCM/DCM原理到PCB布局实战

开关电源作为现代电子设备的能量转换核心,其核心原理是通过高频开关动作实现高效的电能变换。反激拓扑因其结构简单、成本低廉且易于实现电气隔离,成为小功率离线式电源的主流选择。其技术价值在于通过变压器耦合实现能量存储与传递,解决了安全隔离与多路输出等关键需求,广泛应用于充电器、适配器及家电供电等场景。本文聚焦反激电路,深入剖析其CCM与DCM两种工作模式的原理差异及选型考量,并结合伏秒平衡定律与RCD钳位等热词,详解从变压器计算到MOSFET选型的完整工程设计流程。

weixin_31951365的博客 344

编程题: 写一个Singleton

Singleton模式 Singleton可以说是《Design Pattern》中最简单也最实用的一个设计模式。那么,什么是Singleton? 顾名思义,Singleton就是确保一个类只有唯一的一个实例。Singleton主要用于对象的创建,这意味着,如果某个类采用了Singleton 模式,则在这个类被创建后,它将有且仅有一个实例可供访问。很多时候我们都会需要Singleton模式,最

u012872026的专栏 1904

流体动力学仿真软件:XFlow_(20).案例研究:声学仿真

在流体动力学仿真软件中,声学仿真是一个重要的应用领域。通过数值模拟,工程师和科研人员可以预测和分析流体系统中的声学现象,如气动噪声、声波传播和声场分布。这些仿真结果对于优化设计、降低噪声水平和提高系统性能具有重要意义。本节将详细介绍如何在流体动力学仿真软件中进行声学仿真,包括声学模型的选择、参数设置、后处理分析等内容,并通过具体的案例来说明这些步骤。

kkchenjj的博客 902

环形平滑标签(Circular Smooth Label, CSL)技术详解

环形平滑标签(CSL)是一种优化算法,旨在解决旋转目标检测中角度预测的边界问题。通过将角度回归转化为分类任务,并利用窗口函数平滑标签分布,CSL有效处理了角度周期性的梯度突变问题。其核心原理包括角度离散化和平滑标签编码,通过高斯、矩形、三角等窗口函数生成概率分布。CSL在技术实现上涉及标签转换流程、模型结构调整和损失函数优化,显著提升了检测精度和稳定性。在DOTA数据集上的实验表明,CSL在mAP和角度误差方面优于传统方法。应用场景包括遥感图像分析、自动驾驶和工业质检,部署时需注意旋转NMS编译和ONNX导

浩瀚之水的专栏 641

java singleton应用,JAVA中的Singleton模式

JAVA中的Singleton模式单例模式,顾名思义,只能有一个实例。一.从多线程安全说起,如下图代码,此问题可以用synchronized关键字来解决。该方法缺点:每一个线程在获取实例对象之前都要在synchronized上同步的对象上进行等待,因此效率不高。二.Double Check方法,见下图代码。Double Check的初衷是只有当instance为NULL时执行的线程才需要在sync...

weixin_42338883的博客 185

置顶必读(2) |《YOLOv8实战:从入门到深度优化》总目录导航 & 学习路线指南(持续更新中)

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 28万+

在Java中应用设计模式之Singleton

基本概念    ingleton 是一种创建性模型,它用来确保只产生一个实例,并提供一个访问它的全局访问点。正在装载数据……对一些类来说,保证只有一个实例是很重要的,比如有的时候,数据库连接或 Socket 连接要受到一定的限制,必须保持同一时间只能有一个连接的存在。    再举个例子,集合中的 set 中不能包含重复的元素,添加

meteorWJ's Home—Floating clound 845

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

在 Java 中应用设计模式 -- Singleton

2001 年 8 月 05 日 本文介绍了设计模式中 Singleton 的基本概念,对其功能和用途进行了简单的分析,列出了通常实现 Singleton 的几种方法,并给出了详细的Java 代码. &lt;!--START RESERVED FOR FUTURE USE INCLUDE FILES--&gt;&lt;!-- include java script once we verify ...

SpringJava的博客 158

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

在Java中应用设计模式--Singleton

在Java中应用设计模式--Singleton 作者:刘湛    来自:IBM   本文介绍了设计模式中 Singleton 的基本概念,对其功能和用途进行了简单的分析,列出了通常实现 Singleton 的几种方法,并

吃掉大象的蚂蚁的专栏 843

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

单例模式(Singleton Pattern)在JAVA中的应用

getInstance` 方法提供了一个全局访问点,它通过双重检查锁定模式确保线程安全,并创建类的唯一实例。单例模式是一种简单而强大的设计模式,它通过确保一个类只有一个实例,并提供一个全局访问点,来解决对象创建和访问的问题。本文将介绍单例模式,这是一种常用的创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点。// 输出 true。- **单例类(Singleton)**:这个类负责创建自己的实例,并提供一个全局访问点。- **全局访问点**:提供了一个统一的访问点,方便对实例的管理和访问。

无极低码 1071

Singleton 模式 在 Java连接池中的应用

程序中经常有这样的要求,整个程序运行时只有一个实例被使用。比如:数据库连接池,系统参数配置,Java API 中的 Runtime, Calendar ...如何实现这种需求成为一个值得讨论的问题。以往的做法,是在程序的某个类里面(比如是 GlobalObject )建立一个这个此种类的实例,然后规定所有需要用到此类的,都从 GlobalObject 那里获得,看下面的例子:public clas...

快乐天使 263

Java 中应用设计模式 -- Singleton

基本概念 Singleton 是一种创建性模型,它用来确保只产生一个实例,并提供一个访问它的全局访问点.对一些类来说,保证只有一个实例是很重要的,比如有的时候,数据库连接或 Socket 连接要受到一定的限制,必须保持同一时间只能有一个连接的存在.再举个例子,集合中的 set 中不能包含重复的元素,添加到set里的对象必须是唯一的,如果重复的值添加到 set,它只接受一个实例.JDK中正式运

wuhao8989的专栏 454
上一篇: JAR 文件揭密
下一篇: Servlet及JSP中的多线程同步问题
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值