java設計模式——單例設計模式

来源:https://www.cnblogs.com/CSAH/archive/2019/05/18/10886771.html
-Advertisement-
Play Games

/*設計模式:對問題行之有效的解決方式。其實它是一種思想。1,單例設計模式。 解決的問題:就是可以保證一個類在記憶體中的對象唯一性。必須對於多個程式使用同一個配置信息對象時,就需要保證該對象的唯一性。如何保證對象唯一性呢?1,不允許其他程式用new創建該類對象。2,在該類創建一個本類實例。3,對外提供 ...



/*
設計模式:對問題行之有效的解決方式。其實它是一種思想。

1,單例設計模式。
    解決的問題:就是可以保證一個類在記憶體中的對象唯一性。

必須對於多個程式使用同一個配置信息對象時,就需要保證該對象的唯一性。

如何保證對象唯一性呢?
1,不允許其他程式用new創建該類對象。
2,在該類創建一個本類實例。
3,對外提供一個方法讓其他程式可以獲取該對象。

步驟:
1,私有化該類構造函數。
2,通過new在本類中創建一個本類對象。
3,定義一個公有的方法,將創建的對象返回。

下麵四個代碼可放在一個文件中,也可放在不同的文件。

main函數在singleDemo中,建議放在同一個文件,這樣子也不需要改動代碼即可運行
*/

 1 //餓漢式
 2 class Single//類一載入,對象就已經存在了。
 3 {
 4     private static Single s = new Single();
 5 
 6     private Single(){}
 7 
 8     public static Single getInstance()
 9     {
10         return s;
11     }
12 }
//餓漢式
 1 //懶漢式
 2 class Single2//類載入進來,沒有對象,只有調用了getInstance方法時,才會創建對象。
 3             //延遲載入形式。 
 4 {
 5     private static Single2 s = null;
 6 
 7     private Single2(){}
 8 
 9     public static Single2 getInstance()
10     {
11         if(s==null)
12             s = new Single2();
13         return s;
14     }
15 }
//懶漢式
 1 class Test
 2 {
 3     private int num;
 4 
 5     private static Test t = new Test();
 6     private Test(){}
 7     public static Test getInstance()
 8     {
 9         return t;
10     }
11     public void setNum(int num)
12     {
13         this.num = num;
14     }
15     public int getNum()
16     {
17         return num;
18     }
19 
20 }
Test
 1 public class  SingleDemo
 2 {
 3     public static void main(String[] args) 
 4     {
 5         Single s1 = Single.getInstance();
 6         Single s2 = Single.getInstance();
 7 
 8         System.out.println(s1==s2);
 9         
10 //        Single ss = Single.s;
11 
12 //        Test t1 = new Test();
13 //        Test t2 = new Test();
14         Test t1 = Test.getInstance();
15         Test t2 = Test.getInstance();
16         t1.setNum(10);
17         t2.setNum(20);
18         System.out.println(t1.getNum());
19         System.out.println(t2.getNum());
20     }
21 }
SingleDemo

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • [轉載] Python數據類型知識點全解 1.字元串 字元串常用功能 字元串的內置方法 2.列表 3.元組 4.字典 5.集合 ...
  • 1041. 困於環中的機器人 題庫鏈接: 1041. 困於環中的機器人. 題乾 在無限的平面上,機器人最初位於 (0, 0) 處,面朝北方。機器人可以接受下列三條指令之一: "G":直走 1 個單位 "L":左轉 90 度 "R":右轉 90 度 機器人按順序執行指令 instructions,並一 ...
  • //原文參考https://blog.csdn.net/lanchunhui/article/details/52503332 你以為你定義了一個類的對象,其實在編譯器看來你是聲明瞭一個函數 修改為: 當構造函數中存在一些參數時: 當構造函數的參數帶預設值: ...
  • [toc] 創建ashop sso web單點登陸系統 先創建好模塊, 然後配置pom.xml文件 加入spring的配置文件 然後配置web.xml文件, 並把靜態資源放到webapp目錄下. 打包部署模塊測試, 能看到如下效果則項目搭建成功.   用戶名唯一性驗證 |請求方法|GET| ...
  • day23 03 組合的例子 一、用到組合的方式,編寫一個圓環,並能夠計算出它的周長和麵積 運行結果: 二、創建一個老師類,老師有生日,生日也是一個類,涉及組合的方法 運行結果: 三、複習 1、面向對象編程 思想:角色的抽象,創建類,創建角色(實例化),操作這些實例 關鍵字:class 基本框架: ...
  • 本人是一位學生,正在學習當中,可能BUG眾多,請見諒並指正,謝謝!!! 學生列表實現 HTML: PHP: 添加學生實現 HTML: PHP: ...
  • 在eclipse裡面運行代碼即可,如果您是其他應用,請選擇對您有幫助的代碼即可,如果有寫錯或不懂的地方請聯繫QQ:1633420056,謝謝,祝學習進步 <!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here ...
  • 文章大綱 一、許可權框架介紹二、Shiro基礎介紹三、Spring Boot整合Shiro代碼實戰四、項目源碼與資料下載五、參考文章 一、許可權框架介紹 1. 什麼是許可權管理 許可權管理屬於系統安全的範疇,許可權管理實現對用戶訪問系統的控制,按照安全規則或者安全策略控制用戶可以訪問而且只能訪問自己被授權的資 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...