0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單例模式(Singleton Pattern)實(shí)現(xiàn)的方法

冬至子 ? 來源:全棧開發(fā)的碼農(nóng) ? 作者:全棧開發(fā)的碼農(nóng) ? 2023-06-01 11:44 ? 次閱讀

單例模式是指某個(gè)類只允許存在一個(gè)實(shí)例對象,例如在打印機(jī)打印文件時(shí),一次只允許打印一個(gè)文件;一個(gè)程序里的相同彈出對話框只允許有一個(gè)。

單例模式通常在需要控制對象數(shù)量以節(jié)省資源消耗的情況,在實(shí)際軟件設(shè)計(jì)中非常常用,特別是在多線程多進(jìn)程時(shí),可以避免產(chǎn)生多個(gè)實(shí)例對象,造成資源浪費(fèi)。

實(shí)現(xiàn)的方法是在類里創(chuàng)建一個(gè)private構(gòu)造函數(shù),這樣其他類就無法通過new的方式生成其實(shí)例,只能通過類內(nèi)部所定義的getInstance()方法生成實(shí)例,具有私有的構(gòu)造函數(shù)是單例模式的一個(gè)顯著特征。單例模式的一個(gè)簡單示例類圖如下圖所示:

圖片

SingleInstance類的代碼如下:

package singleton;
public class SingleInstance {
  //創(chuàng)建類時(shí)創(chuàng)建一個(gè)實(shí)例
  private static SingleInstance singleInstance=new SingleInstance();
  //私有構(gòu)造函數(shù)
  private SingleInstance() {};
  //生成單實(shí)例
  public static SingleInstance getSingleInstance() {
    return singleInstance;
  }
  public void showMessage() {
    System.out.println("單例模式信息!");
  }
}

調(diào)用SingleInstance生成對象的錯(cuò)誤方法:用new方法生成對象時(shí),編譯器會(huì)報(bào)錯(cuò)。

圖片

調(diào)用SingleInstance生成對象的正確方法:

public class SingletonPattern {
  public static void main(String[] args) {
    SingleInstance singleInstance = SingleInstance.getSingleInstance();
    singleInstance.showMessage();
    /*錯(cuò)誤的調(diào)用方法
    SingleInstance singleInstance = new SingleInstance();
    */
  }
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 打印機(jī)
    +關(guān)注

    關(guān)注

    10

    文章

    762

    瀏覽量

    45525
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1617

    瀏覽量

    49016
收藏 人收藏

    評論

    相關(guān)推薦

    2018年P(guān)ython面試必看的10個(gè)面試題

    模式是最好的解決方案。__new__()在__init__()之前被調(diào)用,用于生成實(shí)例對象。利用這個(gè)方法和累的屬性的特點(diǎn)可以實(shí)現(xiàn)設(shè)計(jì)
    發(fā)表于 07-18 14:52

    OpenHarmony中的模式實(shí)踐

    本文件簡述了實(shí)例的基本知識(shí)及其應(yīng)用場景,并以O(shè)penHarmony中的代碼為分別從C和C++語言角度來分析和學(xué)習(xí)實(shí)例模式實(shí)例
    發(fā)表于 09-15 09:27

    利用golang優(yōu)雅的實(shí)現(xiàn)實(shí)例分享

    1、利用golang優(yōu)雅的實(shí)現(xiàn)實(shí)例平時(shí)編寫代碼過程中,經(jīng)常會(huì)遇到對于全局角度只需運(yùn)行一次的代碼,比如全局初始化操作,設(shè)計(jì)模式中的
    發(fā)表于 10-17 16:46

    設(shè)計(jì)模式在網(wǎng)管系統(tǒng)中的設(shè)計(jì)與實(shí)現(xiàn)

    將設(shè)計(jì)模式引入網(wǎng)管系統(tǒng)可以減少管理系統(tǒng)設(shè)計(jì)的復(fù)雜度,提高系統(tǒng)的開發(fā)效率。在分析設(shè)計(jì)模式中的Singleton模式、Adapter模式、Obs
    發(fā)表于 03-04 22:20 ?14次下載

    關(guān)于iOS開發(fā)單使用問題

    原文鏈接:Avoiding Singleton Abuse 導(dǎo)語 (Singletons),是Cocoa的核心模式之一。在iOS上,
    發(fā)表于 09-25 16:25 ?0次下載

    模式詳解

    是private的話,會(huì)不更好的封裝該內(nèi)呢?我主要是應(yīng)用在使用普通類模擬枚舉類型里,后來發(fā)現(xiàn)這就是傳說中的模式。構(gòu)造函數(shù)弄成private 就是
    發(fā)表于 09-27 15:10 ?0次下載

    模式分成餓漢模式和懶漢模式解析

    定義:作為對象的創(chuàng)建模式,模式確保某一個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。這個(gè)類稱為
    發(fā)表于 12-11 09:49 ?1630次閱讀

    Land Pattern and Solder Stencil

    Land Pattern and Solder Stencil
    發(fā)表于 02-19 11:47 ?7次下載
    Land <b class='flag-5'>Pattern</b> and Solder Stencil

    為什么C++模式不能直接全部使用static變量和static函數(shù)呢?

    通過getInstance()函數(shù)獲取對象,這種模式的關(guān)鍵之處不是在于強(qiáng)迫你用函數(shù)來獲取對象。關(guān)鍵之處是讓static對象定義在函數(shù)內(nèi)部,變成局部static變量??聪逻@種實(shí)現(xiàn)方式
    的頭像 發(fā)表于 06-05 14:14 ?1531次閱讀

    Controller并發(fā)安全的解決辦法

    模式Singleton)是程序設(shè)計(jì)中一種非常重要的設(shè)計(jì)模式,設(shè)計(jì)模式也是Java面試重點(diǎn)考
    的頭像 發(fā)表于 06-15 17:10 ?1634次閱讀

    嵌入式C語言軟件設(shè)計(jì)之裝飾器模式(Decorator Pattern

    裝飾器模式(Decorator Pattern),是結(jié)構(gòu)型設(shè)計(jì)模式的一種,裝飾器模式允許向一個(gè)現(xiàn)有的對象添加新的功能,而又不改變其對象結(jié)構(gòu),這種方式比使用子類繼承的方式更加靈活。
    發(fā)表于 03-01 10:55 ?384次閱讀

    Python實(shí)現(xiàn)模式的五種寫法

    模式Singleton Pattern) 是一種常用的軟件設(shè)計(jì)模式,該
    的頭像 發(fā)表于 05-24 11:27 ?456次閱讀

    一文詳解UVM設(shè)計(jì)模式

    本篇是對UVM設(shè)計(jì)模式 ( 二 ) 參數(shù)化類、靜態(tài)變量/方法/類、模式、UVM_ROOT、工廠模式
    的頭像 發(fā)表于 08-06 10:38 ?1567次閱讀
    一文詳解UVM設(shè)計(jì)<b class='flag-5'>模式</b>

    php設(shè)計(jì)模式和應(yīng)用場景

    ,從小型的網(wǎng)站到大型的企業(yè)級應(yīng)用程序。 下面將介紹一些常見的PHP設(shè)計(jì)模式及其應(yīng)用場景。 模式Singleton
    的頭像 發(fā)表于 12-04 14:54 ?786次閱讀

    OpenHarmony鴻蒙開發(fā)學(xué)習(xí):【Ability的啟動(dòng)模式

    Stage模型中,實(shí)現(xiàn)standard、singleton、specified多種模式場景。
    的頭像 發(fā)表于 04-10 16:32 ?446次閱讀
    OpenHarmony鴻蒙開發(fā)學(xué)習(xí):【Ability的啟動(dòng)<b class='flag-5'>模式</b>】