Java設計模式--單例模式

單例模式(構造器私有)

單例模式(Singleton Pattern)是 Java 中最簡單的設計模式之一,有以下特點:

  • 單例類只能有一個實例。

  • 單例類必須自己創建自己的唯一實例。

  • 單例類必須給所有其他對象提供這一實例。

反射可以破壞單例模式!!!

餓漢式

這種方式比較常用,但容易產生垃圾對象 優點:沒有加鎖,執行效率會提高。 缺點:類加載時就初始化,浪費內存。

?
package com.lyc.single;//餓漢式單例public class Hungry {//可能會浪費空間private byte[] bytes1= new byte[1024*1024];private byte[] bytes2= new byte[1024*1024];private byte[] bytes3= new byte[1024*1024];private byte[] bytes4= new byte[1024*1024];private Hungry(){?}private static final Hungry instance = new Hungry();//創建對象public static Hungry getInstance(){return instance;}}
??
懶漢式

DCL懶漢式:在懶漢式基礎上加入雙重檢驗鎖,保證線程安全和性能。

?
package com.lyc.single;//懶漢式單例模式public class LazyMan {private LazyMan(){?}private volatile static LazyMan lazyMan;public LazyMan getInstance(){//雙重檢測鎖模式的懶漢式單例,簡稱:DCL懶漢式if (lazyMan==null){synchronized (LazyMan.class){if (lazyMan==null){lazyMan=new LazyMan();//不是一個原子性操作//1.分配內存給這個對象//2.執行構造方法,初始化對象//3.將這個對象指向這個空間//可能會發生指令重排,導致對象還沒初始化完成,就返回了//如果有兩個線程在創建對象,可能會造成對象還沒初始化完成,就返回了//如果在創建對象時,多個線程同時判斷到lazyMan==null,就會創建多個對象//解決方法://1.使用synchronized關鍵字//2.使用volatile關鍵字}}}return lazyMan;}//單線程下是安全的//多線程下是不安全的,需要在加鎖。}?

靜態內部類

?package com.lyc.single;//靜態內部類實現public class Holder {private Holder(){?}public static Holder getInstance(){return ?InnerClass.holder;}public static class InnerClass{private static final Holder holder = new Holder();}}
 

單例不安全,因為有反射

枚舉

?package com.lyc.single;?import java.lang.reflect.Method;?//enum是什么,枚舉本身也是一個Class類public enum EnumSingle {INSTANCE;?public EnumSingle getInstance() {return INSTANCE;}}?package com.lyc.single;?import java.lang.reflect.Constructor;import java.lang.reflect.Method;?public class SingleTest {public static void main(String[] args) throws Exception{EnumSingle instance = EnumSingle.INSTANCE;Constructor<EnumSingle> declaredConstructor = EnumSingle.class.getDeclaredConstructor(String.class, int.class);declaredConstructor.setAccessible(true);EnumSingle instance1 = declaredConstructor.newInstance();System.out.println(instance.hashCode());System.out.println(instance1.hashCode());}}
??

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/73433.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/73433.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/73433.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2025年如何避免使用驗證碼求解器時被IP封禁

引言 2025年&#xff0c;驗證碼求解器已成為自動化網絡抓取和其他在線流程的關鍵工具。然而&#xff0c;自動化用戶面臨的一個常見挑戰是IP封禁。當網站檢測到自動化活動時&#xff0c;通常會阻止發出請求的IP地址&#xff0c;導致驗證碼挑戰無法解決。本文將探討使用驗證碼求…

JVM詳解(包括JVM內存模型與GC垃圾回收)

&#x1f4d6;前言&#xff1a; 學會使用Java對于一個程序員是遠遠不夠的。Java語法的掌握只是一部分&#xff0c;另一部分就是需要掌握Java內部的工作原理&#xff0c;從編譯到運行&#xff0c;到底是誰在幫我們完成工作的&#xff1f; 接下來著重對Java虛擬機&#xff0c;也就…

【無標題】大亞灣文化體育場多美啊。

請推薦一些常用并且免費的&#xff0c;可直接在線運行【Python】代碼的平臺并列出對應網址 好的&#xff0c;用戶想讓我推薦一些常用且免費的、可以直接在線運行Python代碼的平臺&#xff0c;并且需要列出對應的網址。我需要先回想一下自己知道的在線Python運行環境&#xff0…

權限提升—Windows權限提升土豆家族溢出漏洞通殺全系

前言 OK&#xff0c;Java安全更新不下去了&#xff0c;實在是太難啦啊&#xff0c;想起來提權這一塊沒怎么更新過&#xff0c;接下來都主要是更新提權這一塊的文章了&#xff0c;Java安全的話以后有耐心再搞了。 手動提權 今天主要是講這個手動的提權&#xff0c;手動提權相…

Vue3 知識點總結

Vue3 知識點總結 1. 核心概念 1.1 Composition API 1.1.1 setup 函數 setup是Vue3中的新的配置項&#xff0c;是組件內使用Composition API的入口在setup中定義的變量和方法需要return才能在模板中使用setup執行時機在beforeCreate之前&#xff0c;this不可用 export defa…

python --face_recognition(人臉識別,檢測,特征提取,繪制鼻子,眼睛,嘴巴,眉毛)/活體檢測

dlib 安裝方法 之前博文 https://blog.csdn.net/weixin_44634704/article/details/141332644 環境: python3.8 opencv-python4.11.0.86 face_recognition1.3.0 dlib19.24.6人臉檢測 import cv2 import face_recognition# 讀取人臉圖片 img cv2.imread(r"C:\Users\123\…

【bug】[42000][1067] Invalid default value for ‘xxx_time‘

MySQL錯誤解決&#xff1a;Invalid default value for xxx_time’問題分析與修復方案 問題描述 在MySQL數據庫操作中&#xff0c;當嘗試創建或修改表結構時&#xff0c;可能會遇到以下錯誤信息&#xff1a; [bug] [42000][1067] Invalid default value for xxx_time這個錯誤…

Go環境相關理解

Linux上安裝的環境變量 ## set go env export GOPATH$HOME/go_workspace export GOPATH/usr/local/go export PATH$PATH:$GOPATH/bin go.mod 和go.sum的理解 go.mod文件 ?go.mod文件定義了模塊的路徑和依賴版本?。它遵循 語義化版本2.0.0規范&#xff0c;記錄了當前項目所依…

Next.js 深度解析:全棧React框架的架構哲學與實踐精髓

Next.js 作為 React 生態中最流行的全棧框架&#xff0c;已經超越了簡單的SSR工具&#xff0c;發展成為完整的Web開發解決方案。以下從八個維度進行深度剖析&#xff1a; 一、核心架構設計 雙引擎驅動模型 頁面路由系統&#xff1a;基于文件系統的約定式路由渲染引擎&#xff…

禾賽盈利了,但激光雷達沒有勝利

還遠沒有到激光雷達黨歡呼的時候。 3月&#xff0c;隨著禾賽科技公布2024年報&#xff0c;全世界第一家也是唯一一家實現全年盈利的激光雷達上市公司誕生&#xff0c;為了這個盈利目標&#xff0c;禾賽科技奮斗了十年。 但極大的出貨量和不高的盈利水平&#xff0c;讓禾賽科技…

心房顫動新機制:ATM/p53通路早期抑制

急性心肌梗死&#xff08;AMI&#xff09;是心血管疾病中的“大魔頭”&#xff0c;它悄無聲息地侵蝕著心臟的肌肉&#xff0c;導致心臟功能受損&#xff0c;嚴重時甚至危及生命。而心房顫動&#xff08;AF&#xff09;&#xff0c;這一常見的心律失常&#xff0c;往往在AMI后悄…

Linux 安裝 Redis

虛擬機安裝 linux https://www.bilibili.com/video/BVldD42177qg?p16 1、安裝 gcc,編譯環境 yum y install gcc-g 2、將 redis-7.2.4.tar.gz放到 linux。如&#xff0c;放到 opt 里 3、進入/opt 目錄下&#xff0c;解壓 tar -zxvf redis-7.2.4.tar.gz 4、進入 redis-7.2.4.tar…

六級備考 詞匯量積累(day11)

sculpture 雕像 allege 指責&#xff0c;聲稱 pledge 發誓 breach 違背&#xff0c;違反 defaulty 違約&#xff0c;違反 infringe 侵犯 infringing on small farmers interest blacmail 勒索 idle 無所事事的 deceive 欺騙 perceive 察覺 conceive 設想 conception 設想 verdi…

關于金碟K3,禁用和啟用需要流程審批后執行

真是難受,是設計師蠢呢自己問題比較多呢,現在都還沒有弄好 點擊禁用和啟用,通過流程來執行 到底是蠢呢還是設計問題,搞了半日沒有效果,搞那么復雜! 而且有樣板都沒有草鞋成功 BOS設計,表單屬性,操作列表: 1、啟用禁用流程

導入 Excel 規則批量修改或刪除 PDF 文檔內容

需要對 PDF 文檔內容進行修改的時候&#xff0c;通常我們會需要借助一些專業的工具來幫我們完成。那我們如果需要修改的 PDF 文檔較多的時候&#xff0c;有什么方法可以幫我們實現批量操作呢&#xff1f;今天這篇文章就給大家介紹一下當我們需要批量修改多個 PDF 文檔的時候&am…

msyql--基本操作之運維篇

檢查 root 用戶的權限 查看該用戶針對這個數據庫的權限 -- 如果在終端連接mysql時需要 mysql -u root -p -- 查看用戶權限 SELECT user, host FROM mysql.user WHERE user root;可以看的出來root有他的訪問權限&#xff0c;如過沒有localhost或者% 說明沒有訪問權限 添加…

Vue 3使用 Socket

在 Vue 3 中使用 Socket&#xff08;如 WebSocket 或基于 WebSocket 的庫比如 Socket.IO&#xff09;可以通過組合式 API&#xff08;Composition API&#xff09;來實現得更清晰、模塊化。下面我給你展示一個完整的例子&#xff0c;包括使用原生 WebSocket 和使用 Socket.IO 的…

云計算:探索現代科技的未來之云

文章目錄 云計算基本概念云計算是什么注意 云計算的價值云計算的部署模式云計算的服務模式主流的云計算技術AWS簡介AWS建立了廣闊的合作伙伴生態 VMware簡介VMware服務介紹 華為云簡介華為云Stack模式 云計算基本概念 云計算是什么 云計算是一種模型&#xff0c;它可以實現隨時…

光學像差的類型與消除方法

### **光學像差的類型、理解與消除方法** 光學像差是指實際光學系統成像時&#xff0c;由于透鏡或反射鏡的非理想特性導致的光線偏離理想路徑&#xff0c;從而影響成像質量的現象。像差可分為**單色像差**&#xff08;與波長無關&#xff09;和**色差**&#xff08;與波長相關…

什么是ecovadis驗廠?ecovadis驗廠的好處?ecovadis驗廠的重要意義

1. 什么是EcoVadis驗廠&#xff1f; EcoVadis驗廠&#xff08;又稱EcoVadis評估&#xff09;是國際權威的 企業社會責任&#xff08;CSR&#xff09;和可持續發展&#xff08;ESG&#xff09;在線評估&#xff0c;通過審核企業在 環境、勞工與人權、商業道德、可持續采購 四大…