java模式之单例模式

单例模式-JAVA实验 这种设计模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。在这些场景中,需要确保只有一个实例对象被创建,否则可能会出现资源的浪费和对象的重复创建等问题。通过实验,熟练使用Java语言实现单例设计模式,理解这种种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式,并学会分析这些模式的使用效果。首先,定义一个 ShoppingCartManager 类,作为购物车管理器,使用单例模式来确保在整个应用程序中只有一个实例对象被创建。单例模式在实际开发中的应用极其广泛。 阅读详情

java模式之单例模式:
          单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。
 特点:
       1,一个类只能有一个实例
       2,自己创建这个实例
       3,整个系统都要使用这个实例
    例: 在下面的对象图中,有一个"单例对象",而"客户甲"、"客户乙" 和"客户丙"是单例对象的三个客户对象。可以看到,所有的客户对象共享一个单例对象。而且从单例对象到自身的连接线可以看出,单例对象持有对自己的引用。

    Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。一些资源管理器常常设计成单例模式。
    外部资源:譬如每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干个通信端口,系统应当集中管理这些通信端口,以避免一个通信端口被两个请求同时调用。内部资源,譬如,大多数的软件都有一个(甚至多个)属性文件存放系统配置。这样的系统应当由一个对象来管理这些属性文件。

一个例子:Windows 回收站。
在整个视窗系统中,回收站只能有一个实例,整个系统都使用这个惟一的实例,而且回收站自行提供自己的实例。因此,回收站是单例模式的应用。

两种形式:
1,饿汉式单例类
public class Singleton {

  private Singleton(){}

  //在自己内部定义自己一个实例,是不是很奇怪?
  //注意这是private 只供内部调用

  private static Singleton instance = new Singleton();

  //这里提供了一个供外部访问本class的静态方法,可以直接访问  
  public static Singleton getInstance() {
    return instance;   
   }
}

2,懒汉式单例类

public class Singleton {

  private static Singleton instance = null;

  public static synchronized Singleton getInstance() {

  //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次   

 
  //使用时生成实例,提高了效率!
  if (instance==null)
    instance=new Singleton();
  return instance;   }

}


第二中形式是lazy initialization,也就是说第一次调用时初始Singleton,以后就不用再生成了。


注意到lazy initialization形式中的synchronized,这个synchronized很重要,如果没有synchronized,那么使用getInstance()是有可能得到多个Singleton实例。
一般来说第一种比较安全。

 用单例模式实现的java连接MySql数据库

package com.adrop.util;



import java.sql.*;



public class DBManager {

//用户名

private String user = "";

//密码

private String password = "";

//主机

private String host = "";

//数据库名字

private String database = "";

//private DBManager dbm=null;



/*

private String url="jdbc:mysql://"+host+"/"+"useUnicode=true&characterEncoding=GB2312";

*/

private String url ="";

private Connection con = null;



Statement stmt;

/**

* 私有的构造方法,保证外部不能实例化,只能由DBManager自己能提供自

* 己的实例,并且只能有一个。

* 根据主机、数据库名称、数据库用户名、数据库用户密码取得连接。

* @param host String

* @param database String

* @param user String

* @param password String

*/

private DBManager(String host, String database, String user, String password) {



this.host = host;

this.database = database;

this.user = user;

this.password = password;

//显示中文

this.url = "jdbc:mysql://" + host + "/" + database +

"?useUnicode=true&characterEncoding=GB2312";



try {

Class.forName("org.gjt.mm.mysql.Driver");

}

catch (ClassNotFoundException e) {

System.err.println("class not found:" + e.getMessage());

}



try {

con = DriverManager.getConnection(this.url, this.user, this.password);

//连接类型为ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY

stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,

ResultSet.CONCUR_READ_ONLY);

}

catch (SQLException a) {

System.err.println("sql exception:" + a.getMessage());

}

}

/**

* 静态工厂方法,来获得一个DBManager实例

*/

public static DBManager getInstance(String host, String database, String user, String password){

if(dbm==null){

dbm=new DBManager(host,database,user,password);

}

return dbm;

}

/**

* 返回取得的连接

*/

public Connection getCon() {

return con;

}

/**

* 执行一条简单的查询语句

* 返回取得的结果集

*/

public ResultSet executeQuery(String sql) {

ResultSet rs = null;

try {

rs = stmt.executeQuery(sql);

}

catch (SQLException e) {

e.printStackTrace();

}

return rs;

}

/**

* 执行一条简单的更新语句

* 执行成功则返回true

*/

public boolean executeUpdate(String sql) {

boolean v = false;

try {

v = stmt.executeUpdate(sql) > 0 ? true : false;

}

catch (SQLException e) {

e.printStackTrace();

}

finally {

return v;

}

}



}

 
java设计模式之单例模式——Singleton pattern 设计模式故事会:https://blog.youkuaiyun.com/weixin_40205234/article/details/90664824 单例模式 单例模式(Singleton pattern)是java中最常见的设计模式之一。该模式属于创建型设计模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一... 阅读详情

相关推荐

Java 单例模式

使用单例模式的本意是 保证类在内存中只能有一个对象 ,单例模式有两种,一个是饿汉式,一个是懒汉式! 假设学校给学姐分配任务:帮助学弟解决问题!

两行代码 踏踏实实de工作 1万+

java单例模式

定义:单例模式(Singleton)指一个类只有一个实例,并且该类能自行创建这个实例的一种模式。例如,Windows 中只能打开一个任务管理器,这样可以避免因打开多个任务管理器窗口而造成内存资源的浪费,或出现各个窗口显示内容的不一致等错误。单例类只有一个实例对象;该单例对象必须由单例类自行创建;单例类对外提供一个访问该单例的全局访问点;

qq_48268296的博客 4366

轴承寿命预测实战:手把手教你用IEEE PHM2012数据集训练模型(附Python代码)

本文详细介绍了如何利用IEEE PHM2012数据集构建轴承剩余寿命预测模型,从数据预处理、特征工程到LSTM模型训练与部署,提供了完整的Python代码实现。通过实战案例,帮助读者掌握预测性维护中的关键技术,提升工业设备的运行安全与效率。

weixin_29186249的博客 311

Java设计模式之单例模式

单例模式详解,spring中单例模式的使用

qq_45743985的博客 2116

单细胞测序数据分析——细胞通讯 CellChat

cellchat

G2530051386的博客 1万+

【保姆级教程/代码】GNSS反演大气可降水量(Precipitable Water Vapor, PWV)

GPS精密单点定位(PPP)是一种采用精密卫星星历和卫星钟差进行非差单点定位的方法,在观测过程中采用双频载波相位观测法以确保高精度定位精度。本文利用PPP技术来求解天顶对流层延迟(zenith tropospheric delay,ZTD)。ZTD由湿延迟(ZWD)和干延迟(ZHD)组成,其中占比90%的ZHD与地面测站高程、大气压和测站纬度等参数有良好的相关性,可以通过Saastamoinen模型精确求出;

weixin_43910227的博客 2926

【单例模式】java设计模式之——单例模式(通俗易懂!!最强详解)

单例模式是一种常见的设计模式,用于确保某个类只有一个实例,并提供全局访问点以供其他对象使用。在Java中,单例模式的实现方式主要有懒汉式单例、饿汉式单例和登记式单例。是指在首次使用时才创建实例。其特点是延迟加载,即在需要的时候才创建对象。懒汉式单例的写法通常采用双重检查锁定来保证线程安全。是指在类加载时就创建实例。其特点是立即加载,即在类加载时就生成对象。饿汉式单例的写法简单直接,但无法实现延迟加载。是指将所有实例都存放在一个注册表中,通过标识符来获取对应的实例。

miles067的博客 1734

PADS导出PCB正反面丝印为CAD文件的方法

本文介绍如何将PADS绘制的pcb格式的PCB文件顶底层丝印及板框导出为CAD的dxf文件格式,并且将底层丝印进行镜像为正常视角

luguodeyo的博客 3295

JAVA设计模式之单例模式

本文继续介绍23种设计模式系列之单例模式。 概念:   java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。   单例模式有以下特点:   1、单例类只能有一个实例。   2、单例类必须自己创建自己的唯一实例。   3、单例类必须给所有其他对象提供这一实例。  单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例...

一个本科小生的奋斗史 101万+

2025年前端框架全景解析:React、Vue、Angular的生态与未来之争

前端框架的竞争本质是工程哲学的分野:React的灵活、Vue的简洁、Angular的严谨,分别对应不同场景需求。

科技D人生 4844

使用ChatGPT工具阅读文献的实战教程

本文介绍核心内容为使用ChatGPT工具阅读文献,希望对学习和使用ChatGPT的同学们有所帮助。为了兼顾质量和速度,本专栏的更新频率为一周一到两更。 文章目录 1. 前言 2. 实战教程 2.1 下载工具并登录 2.2 提取文献中的关键信息

herosunly的博客 15万+

java设计模式之单例模式

java设计模式之单例模式

liu_da_da的博客 1万+

云原生之容器编排实践-在K8S集群中使用Registry2搭建私有镜像仓库

基于前面搭建的3节点 Kubernetes 集群,今天我们使用 Registry2 搭建私有镜像仓库,这在镜像安全性以及离线环境下运维等方面具有重要意义。作为测试环境,本次使用 Registry2 搭建了私有镜像仓库,实际生产环境建议使用 Harbor;创建了一个 local-storage 的 StorageClass ,并使用本地磁盘的方式创建使用 PV ,实际建议使用 NFS 。

Heartsuit的博客 2462

详解Java设计模式之单例模式(Singleton Pattern)

单例模式只包含一个 Singleton(单例角色)类,在单例类的内部实现只生成一个实例,同时它提供一个静态的getInstance()工厂方法,让客户可以使用它的唯一实例。

Elegance never goes out of fashion 2745

OSCP-Challenge 2 - Relia

使用andrea:PasswordPassword_6登录远程桌面,在c盘根目录下发现一个计划任务的ps,文件,修改执行的exe位木马,获取到milana用户的反弹shell。,发现开放了一个8000端口,但是我们外部是访问不到的,它对应的页面是/var/www/internal/,这个目录下的文件我们是可以访问的,把这个文件打个包放到本地分析下。其中数据的可以直接连接mssql,但是端口是49965,不过在数据库中没发现什么可用的信息,但是可以修改密码直接进后台,这个可以先放放。

羽的博客 7770

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Java 单例模式(Singleton Pattern)

单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。单例模式的核心是:限制类的实例化次数为 1,并提供全局访问点来获取该实例。单例模式通常用于那些需要共享资源或提供全局访问的类,比如配置管理类、数据库连接池等。

qq_35082497的博客 1129

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

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

无极低码 1070

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

java单例模式——详解JAVA单例模式及8种实现方式

本文转载自:java单例模式——详解JAVA单例模式及8种实现方式_EatingSoilLang的博客-优快云博客_java单例模式 ## 单例模式是最简单也是最基础的设计模式之一,下边一起学习一下单例模式! 一.单例模式的定义: 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Printer Spooler

chali1314的博客 2万+

Java Singleton Pattern 单例模式

Java Singleton Pattern 单例模式 维基百科: 点击打开链接 在应用这个模式时,单例对象的类必须保证只有一个实例存在. 关键点: 1.私有构造函数 - 其他类不能实例化一个新的对象。 2.私有化引用 - 不能进行外部修改。 3.公有静态方法是唯一可以获得对象的方式。 public class SingleObject { private

xiaowanggedege的专栏 2111

Java之单例模式

在多线程环境下程序运行的结果与单线程环境下程序运行的结果不一样(不达预期)单例模式是一种设计模式(设计模式:就是在特定的场景下,解决问题最优的方式,类似于棋谱),单例:顾名思义,全局只有一个实例对象。初始状态instance=null,外层if判断为true,进入,此时三个线程参与锁竞争,线程1拿到了锁,线程2和线程3处在堵塞状态,线程1内层if判断为true,执行instance的赋值操作,之后释放锁资源,返回赋值之后的对象,线程2拿到了锁资源,内层if判断为false,释放锁资源,返回instance,

qq_64580912的博客 1967

Java五种单例模式

Java的五种单例模式,大家应该都接触过或者都用过。本篇介绍下Java的五种单例模式,并分析其优缺点,希望给初学者提供一点帮助。

zhaojun的博客 2万+

java模式之单例模式(Singleton Pattern)

  java模式之单例模式:          单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。 特点:       1,一个类只能有一个实例       2,自己创建这个实例       3,整个系统都要使用这个实例    例: 在下面的对象图中,有一个"单例对象",而"客户甲"、"客户乙" 和"客户丙"是单例对象的三个客户对象。可以看到,所

imnol的专栏 850

『Java』设计模式之单例模式(Singleton Pattern)单例模式的八种写法

# 单例模式简介 单例模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 单例模式使用getInstance() 方法获取唯一的实例,但是调用时中**需要使用同步锁 synchronized (Singleton.class) 防止多线程同时进入造成 instance 被多次实例化**。

Ho1aAs‘s Blog 888

java单例模式、Scala单例模式

单例java的两种单例模式Scala的单例模式 java的两种单例模式 /** * 单例 * * 一个类只能创建一个对象, * 定义的步骤: * 恶汉式: * 1、私有构造器 * 2、提供一个public的static的返回值为本类引用的方法 * 3、为了给第2步中提供实例,创建一个private的s...

Baiyabai的博客 1236

Java编写Singleton Pattern 单例模式

Java编写Singleton Pattern 单例模式,以及单例模式的优点和适用场景

weixin_44853907的博客 227

【Java设计模式】之 单例模式(Singleton Pattern)模式 饿汉式单例模式 vs 懒汉式单例模式

什么是设计模式? 设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模免去我们自己再思考和摸索,设计模式就像是经典的棋谱,不同的棋局,我们用不同的棋谱,"套路”。 设计模式的分类: ① 创建型模式(5种):工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 ② 结构型模式(7种):适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 ③ 行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、

weixin_46081857的博客 418
上一篇: 剑宗流
下一篇: java模式之中介者模式
dracularking
博客等级 码龄20年 1592粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值